SAP Web Service: Eine umfassende Anleitung für ABAP-Entwickler

Web Service Erstellungsassistent starten

In der heutigen vernetzten Geschäftswelt sind Web Services aus dem SAP-Ökosystem nicht mehr wegzudenken. Sie ermöglichen die nahtlose Kommunikation zwischen unterschiedlichen Systemen und Applikationen, sowohl innerhalb als auch außerhalb der SAP-Landschaft. Für ABAP-Entwickler ist das Verständnis und die Beherrschung von Sap Web Services eine Schlüsselqualifikation, um moderne Integrationsszenarien umzusetzen. Dieser Leitfaden richtet sich an Einsteiger und bietet eine detaillierte Schritt-für-Schritt-Anleitung zur Erstellung, Nutzung und Fehlerbehebung von Web Services in einem ABAP-System. Wir beleuchten die wichtigsten Transaktionen und Konzepte, die für eine erfolgreiche Implementierung unerlässlich sind.

Die Fähigkeit, robuste und effiziente Schnittstellen zu entwickeln, ist entscheidend für den Erfolg von Integrationsprojekten. Ähnlich wie man bei der Erstellung anspruchsvoller digitaler Inhalte auf professionelle Werkzeuge wie professionelle Videobearbeitung setzt, um optimale Ergebnisse zu erzielen, erfordert auch die Web-Service-Entwicklung in SAP präzises Vorgehen und das richtige Know-how.

Erstellung eines SAP Web Service Providers im ABAP-System

Ein Web Service Provider stellt Funktionalitäten für andere Systeme bereit. Im Folgenden wird detailliert beschrieben, wie ein ABAP-Funktionsbaustein als Web Service im SAP CRM-System exponiert wird.

1. Funktionsbaustein anlegen

Zuerst erstellen Sie einen neuen Funktionsbaustein, der beispielsweise eine Produktbeschreibung anhand einer gegebenen Produkt-ID zurückliefert. Dieser Funktionsbaustein muss remote-fähig sein.

Signatur und Quellcode des Funktionsbausteins:

FUNCTION ZGET_PROD_DESCRIPTION.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IV_PROD_ID) TYPE COMM_PRODUCT-PRODUCT_ID
*" EXPORTING
*" VALUE(RV_TEXT) TYPE STRING
*"----------------------------------------------------------------------
  SELECT SINGLE A~short_text INTO rv_text
    FROM COMM_PRSHTEXT AS A
    INNER JOIN comm_product AS B ON B~product_id = iv_prod_id AND B~product_guid = A~product_guid.
ENDFUNCTION.

Stellen Sie sicher, dass der Funktionsbaustein in der Transaktion SE37 als “Remote-fähig” (Verarbeitungsart: Remote-fähiger Baustein) gekennzeichnet ist. Dies ist eine Voraussetzung für die Nutzung als Web Service.

2. Web-Service-Erstellungsassistent starten

Navigieren Sie in der Transaktion SE37 oder SE80 zum Funktionsbaustein und starten Sie den Web-Service-Erstellungsassistenten. Dies geschieht in der Regel über das Kontextmenü (Rechtsklick auf den Funktionsbaustein -> “Weitere Funktionen” -> “Web Service erstellen”).

Web Service Erstellungsassistent startenWeb Service Erstellungsassistent starten

Folgen Sie den Anweisungen des Assistenten, um die Erstellung abzuschließen. Wählen Sie den Authentifizierungsansatz entsprechend Ihrem Anwendungsfall und den Sicherheitsrichtlinien Ihres Unternehmens. Der Assistent führt Sie durch die notwendigen Schritte zur Definition des Service.

3. Service-Definition prüfen und WSDL-Link notieren

Nach Abschluss des Assistenten finden Sie Ihre Service-Definition im Object Navigator (Transaktion SE80).

Service Definition im Object NavigatorService Definition im Object Navigator

Wechseln Sie zur Registerkarte “WSDL”. Hier finden Sie den Link zur Web Service Description Language (WSDL) Ihrer Service-Definition. Notieren Sie diesen WSDL-Link, da er später für die Konfiguration des Consumers benötigt wird. Die WSDL beschreibt die Schnittstelle und die Kommunikation des Web Service.

4. Web Service Konfiguration im SOAMANAGER

Verwenden Sie die Transaktion SOAMANAGER, um die neu erstellte Service-Definition zu konfigurieren und zu aktivieren. Wählen Sie im SOAMANAGER die Option “Web Service Konfiguration”.

Web Service Konfiguration im SOAMANAGERWeb Service Konfiguration im SOAMANAGER

Suchen Sie nach Ihrer Service-Definition. Klicken Sie auf den Hyperlink der Service-Definition und erstellen Sie einen neuen Service.

Neuen Service erstellenNeuen Service erstellen

Aus Sicherheitsgründen wird empfohlen, die Option “SSL” für die Kommunikation zu wählen, um eine verschlüsselte Verbindung sicherzustellen.

Klicken Sie auf “Fertigstellen”.

Web Service Konfiguration abschließenWeb Service Konfiguration abschließen

Ihr Web Service ist nun zur Nutzung bereit. Klicken Sie auf das Symbol, um den Service-Endpoint-URL abzurufen.

Notieren Sie diesen Link zur späteren Verwendung. Dieser Link ist der tatsächliche Endpunkt, über den der Web Service aufgerufen werden kann.

Service Endpoint URL notierenService Endpoint URL notieren

Nutzung eines SAP Web Service Consumers im ABAP-System

Ein Web Service Consumer ruft die Funktionalitäten eines anderen Systems über dessen Web Service auf. Hier erfahren Sie, wie Sie einen zuvor erstellten Web Service in einem ABAP-System nutzen.

1. Service Consumer anlegen

Wechseln Sie zur Transaktion SE80 (Object Navigator) und erstellen Sie einen neuen Service Consumer.

2. Externen WSDL-Link verwenden

Wählen Sie die Option “Externes WSDL”.

Externes WSDL auswählenExternes WSDL auswählen

Verwenden Sie den WSDL-Link, den Sie im letzten Schritt der Provider-Erstellung (Schritt 3 von “Erstellung eines SAP Web Service Providers”) notiert haben. Dieser Link beschreibt die Schnittstelle des zu konsumierenden Services.

Aktivieren Sie Ihren Consumer Proxy und notieren Sie den generierten ABAP-Klassennamen. Dieser Klassenname ist entscheidend für die spätere Programmierung der Web Service-Aufrufe.

Consumer Proxy aktivieren und Klassennamen notierenConsumer Proxy aktivieren und Klassennamen notieren

3. Logischen Port im SOAMANAGER erstellen

Kehren Sie zum SOAMANAGER zurück und suchen Sie den in Schritt 2 erstellten Consumer Proxy. Erstellen Sie einen neuen logischen Port für diesen Consumer Proxy. Der logische Port ist eine Konfiguration, die angibt, wie der Consumer mit dem Provider kommunizieren soll.

Neuen logischen Port erstellenNeuen logischen Port erstellen

4. Korrekte URL für den logischen Port angeben

Stellen Sie sicher, dass Sie die Service-Endpoint-URL verwenden, die Sie im letzten Schritt der Web-Service-Erstellung (Schritt 4 von “Erstellung eines SAP Web Service Providers”) notiert haben. Wenn Sie stattdessen den WSDL-Link aus der SE80-Registerkarte “WSDL” verwenden, erhalten Sie möglicherweise den folgenden Fehler:

Fehlermeldung bei falscher URLFehlermeldung bei falscher URL

Die korrekte URL ist der aktive Endpoint, nicht die WSDL-Beschreibung selbst. Für die Verwaltung komplexer technischer Konfigurationen und Arbeitsabläufe sind präzise Anleitungen unerlässlich. Ähnlich wie CAD-Systeme für Ingenieure zur Sicherstellung der Genauigkeit bei der Produktentwicklung beitragen, ist die korrekte URL für die Web-Service-Kommunikation von grundlegender Bedeutung.

5. Web Service im ABAP-Report konsumieren

Nun können Sie den Web Service in einem ABAP-Report aufrufen. Die Datentypen für die Ein- und Ausgabeparameter finden Sie im generierten Consumer Proxy in der Transaktion SE80.

data: lr_proxy TYPE REF TO CO_ZPRODUCTDESCRIPTION4,
      input    TYPE ZGET_PROD_DESCRIPTION,
      output   TYPE ZGET_PROD_DESCRIPTION_RESPONSE.

input-iv_prod_id = 'ARNO_TEST004'. " Beispiel Produkt-ID

CREATE OBJECT lr_proxy
  EXPORTING
    LOGICAL_PORT_NAME = 'ZLP_JERRY1'. " Ihr erstellter logischer Port

CALL METHOD lr_proxy->ZGET_PROD_DESCRIPTION
  EXPORTING
    input  = input
  IMPORTING
    output = output.

" Hier können Sie den Wert von output-rv_text weiterverarbeiten
WRITE: / 'Produktbeschreibung:', output-rv_text.

Führen Sie den Report aus, um das Ergebnis des Web Service-Aufrufs zu erhalten:

Web Service AusführungsergebnisWeb Service Ausführungsergebnis

Die Produktbeschreibung, die der Web Service zurückgibt, sollte nun im Report angezeigt werden, entsprechend der Daten aus dem System.

Tracing der Web Service-Ausführung

Bei der Entwicklung und Fehlerbehebung von Web Services ist es entscheidend, die Ausführung verfolgen zu können. Die Transaktion SRT_UTIL bietet hierfür umfangreiche Möglichkeiten.

Verwenden Sie die Transaktion SRT_UTIL. Fügen Sie eine neue Konfiguration für Ihren Benutzer hinzu, der den Web Service-Aufruf auslöst.

Konfiguration für den Benutzer im SRT_UTILKonfiguration für den Benutzer im SRT_UTIL

Setzen Sie den “Functional Trace” auf “High”. Bei Bedarf können Sie auch den Performance- und Payload-Trace aktivieren, um detailliertere Informationen zu sammeln. Der Payload-Trace ist besonders nützlich, um die gesendeten und empfangenen XML-Nachrichten zu prüfen.

Klicken Sie auf “Konfiguration speichern”, um die Änderungen zu übernehmen.

Führen Sie den ABAP-Report aus, der den Web Service-Aufruf triggert. Nach Abschluss des Reports wechseln Sie zur Registerkarte “Functional Trace” in der SRT_UTIL und klicken Sie auf die Schaltfläche “Aktualisieren”. Sie sollten nun mehrere Einträge für die Ausführungsverfolgung sehen.

Ausführungs-Trace im SRT_UTILAusführungs-Trace im SRT_UTIL

Doppelklicken Sie auf die Zeile vom Typ “Response”, um die detaillierten Antwortdaten zu prüfen. Hier finden Sie beispielsweise den Produktbeschreibungswert, der vom Service Provider zurückgegeben wurde. Der Trace ist ein unverzichtbares Werkzeug zur Analyse und Behebung von Problemen in der Web Service-Kommunikation.

Fazit

SAP Web Services sind ein mächtiges Werkzeug für die Systemintegration im ABAP-Umfeld. Dieser Leitfaden hat Ihnen die grundlegenden Schritte zur Erstellung eines Providers, zur Konsumierung eines Services und zur Überwachung der Ausführung mittels Trace-Tools nähergebracht. Mit diesem Wissen können ABAP-Entwickler robuste und effiziente Schnittstellen implementieren, die für moderne Geschäftsprozesse unerlässlich sind.

Die Beherrschung dieser Techniken ist entscheidend, um die Konnektivität und Flexibilität Ihrer SAP-Systeme zu gewährleisten. Vertiefen Sie Ihr Wissen und experimentieren Sie mit verschiedenen Szenarien, um das volle Potenzial von SAP Web Services auszuschöpfen.