Webservices in SAP
Allgemeine Infos und Vorbereitung
· Funktionalität wird durch einen RFC-fähigen Funktionsbaustein bereitgestellt.
Der Baustein braucht mindestens einen Exportparameter und kann beliebig viele Importparameter haben. Auch Tabellen oder Felder können als Parameter angegeben werden.
· In der SICF muss der Webservice im Pfad
sap/bc/srt/rfc/sap/ <service Name des Webservices>
aktiviert sein. Außerdem muss, um überhaupt Webservices nutzen zu können der Service
sap/bc/srt/wsdl
ebenfalls aktiviert sein.
· Der Webservice kann von extern über einen Systemuser von SAP angesprochen werden. Dieser braucht mindestens die folgenden Berechtigungsobjekte:
SAP_BC_WEBSERVICE_SERVICE_USER
SAP_BC_WEBSERVICE_CONSUMER
· Der Webservice hat eine eindeutige URL, über die er erreichbar ist.
Wie funktioniert ein Webservice?
Ein Webservice ist im Prinzip eine Schnittstelle zwischen verschiedenen Programmen, die auf unterschiedlichen Systemen oder Plattformen betrieben werden können.
Ein Client sendet eine Anfrage an den Webservice, übergibt dabei ggf. Parameter, anhand deren der Webservice Daten zurück gibt.
Die Kommunikation geschieht über WSDL, ein auf XML basierendes Interface, was für den Betrachter nicht wirklich lesbar ist (zum Glück macht SAP das für uns).
Webservice aus Funktionsbaustein erstellen
Rechtsklick auf Paket, Anlegen, Enterprise Service
Wir wollen einen Service-Provider anlegen…
…dessen Funktion aus dem zuvor angelegten Funktionsbaustein kommen soll:
Und im nächsten Bild dann den Funktionsbaustein auswählen.
Nun durch „Weiter“ durchklicken, Paket und Transportauftrag angeben und schließlich auf „Fertigstellen“ klicken.
Der Webservice wird nun automatisch generiert, und verfügt über die Funktionalität des Funktionsbausteins.
Nach Aktivierung des Webservices ist dieser aber noch nicht nutzbar! Man muss erst ein sogenanntes binding im SOAMANAGER (s.u.)erstellen!
Was tun, wenn man nachträglich was am Funktionsbaustein ändert?
Verändert man nur etwas am Code, ist das egal, das übernimmt der Service dann. Fügt man jedoch Übergabeparameter hinzu, oder ändert sonst etwas an der „äußeren Erscheinung“, muss man den Webservice neu generieren. Dies tut man, indem man in der SE80 den Webservice anklickt und in den Bearbeitungsmodus geht. Dann mit Rechtsklick auf den Service, und auf Prüfen. Es wird automatisch geprüft, ob Änderungen vorliegen und wenn ja, wird abgefragt, ob die Änderung übernommen werden soll.
SOAMANAGER
Im SOAMANAGER administriert man seine Webservices. Aufruf ist einfach die Transaktion SOAMANAGER.
Reiter „Service_Administration“, Link „Konfiguration einzelner Services“
Nach dem erstellten Webservice suchen und auf „Apply Selection“ klicken.
Im 2. Abschnitt auf den Reiter „Konfiguration“ klicken. Hier sollte man eine leere Tabelle vorfinden. Deshalb klickt man auf „Endpunkt anlegen“ und im folgenden Popup auf Einstellungen übernehmen.
Nun ist es wichtig, dass man unten bei den Authentifizierungseinstellungen ein Häkchen bei „Benutzer-ID und Kennwort“ bei der Transportebene setzt und anschließend auf Sichern klickt, sonst wird das Binding/Endpunkt nicht gespeichert.
Erst jetzt ist der Service von extern ansprechbar. Die WSDL-URL (oder auch das ganze WSDL Dokument) kann man sich im zweiten Abschnitt unter Übersicht anzeigen lassen.
(Ein geeignetes Programm, um den Webservice von Extern zu testen ist soapUI
http://www.soapui.org/)