
Die Interface-Pattern Zustandslos (XI 3.0-kompatibel), Zustandslos, Zustandsbehaftet und TU&C/C weisen für jedes Service-Interface die Art der durchzuführenden Kommunikation zu. Zustandsbehaftete Kommunikation bedeutet, dass von der Messaging-Laufzeit ein Speichern eines Zustandes beim Provider unterstützt wird, sobald die Messaging-Laufzeit den Message-Austausch erfolgreich abgeschlossen hat.
Dieses Interface-Pattern wird nur für einige spezielle technischen Szenarios benötigt. Eine gemeinsame Verbuchung von Daten beim Empfänger ist nicht gewährleistet.
Dieses Interface-Pattern können Sie nicht bei einer erweiterten Kommunikation über den Integration Server verwenden. Es wird nur synchrone zustandsbehaftete Kommunikation unterstützt.
Sie haben ein Proxy generiert. Siehe auch Consumer-Proxy generieren
Sie haben das Consumer-Proxy konfiguriert.
Weitere Informationen hierzu finden Sie im Abschnitt Consumer-Proxy konfigurieren.
Die Rolle SAP_BC_WEBSERVICE_CONSUMER wurde den Benutzerstammdaten des Benutzers zugeordnet, der den Aufruf beim Provider verarbeitet (siehe Authorizations). Der Benutzer beim Provider hängt von den Anmeldeeinstellungen des Provider-Enpunkts und/oder der Konfiguration des Consumer-Proxys ab. Entweder wird der Benutzer beim Consumer an den Provider übergeben, ein generischer Benutzer wie in der Consumer-Proxy-Konfiguration angegeben verwendet oder ein generischer Benutzer wie am Provider-Endpunkt angegeben verwendet.
Aufruf eines synchronen Services aus einer Applikation
Gehen Sie vor wie folgt. In diesem Beispiel hat der Service zwei zustandsabhängige Operationen.
Instanziieren Sie die Proxy-Klasse.
DATA: lv_<client proxy name> TYPE REF TO <client proxy name>.
CREATE OBJECT lv_<client proxy name>
EXPORTING
LOGICAL_PORT_NAME =
Der logische Port muss angegeben werden, wenn kein Standardport vereinbart wurde.
Füllen Sie die Abfrage-Datenstruktur aus.
DATA: lv_<request data> TYPE <request data1>,
lv_<response data> TYPE <response data1>,
lv_<request data2> TYPE <request data2>,
lv_<response data2> TYPE <response data2>.
Rufen Sie die zustandsabhängigen Service-Operationen auf.
CALL METHOD lv_<client proxy name>-><name of method1 / operation1>
EXPORTING
INPUT = lv_<request data1>
IMPORTING
OUTPUT = lv_<response data1>
CALL METHOD lv_<client proxy name>-><name of method2 / operation2>EXPORTING
INPUT = lv_<request data2>
IMPORTING
OUTPUT = lv_<response data2>
Verschalen Sie die Proxy-Instanziierung und den Web-Service-Aufruf in einem TRY – CATCH-Block und führen Sie eine Fehlerbehandlung durch.
TRY.
... CATCH cx_ai_system_fault INTO DATA(lx_ai_system_fault).
<process error>
CATCH <application error> INTO DATA(lx_<application_error>)
<process error>
ENDTRY
Werten Sie die empfangenen Daten aus.
<process the data>
Geben Sie die Sitzung beim Provider frei (dies ist wichtig, um dem Provider die Freigabe der an die Sitzung gebundenen Ressourcen zu ermöglichen).
DATA lo_session_protocol TYPE REF TO if_wsprotocol_session. lo_session_protocol ?= lv_<client proxy name>->get_protocol( if_wsprotocol=>session ).lo_session_protocol->disable_session( ).
Die Laufzeit unterstützt Protokolle für weitere speziellere Services. Weitere Informationen finden Sie unter Protokolle.