Show TOC

Zustandsbehafteten Web-Service konsumierenLocate this document in the navigation structure

Verwendung

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.

Voraussetzungen
  • 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.

  1. 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.

  2. 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>.

  3. 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>

  4. 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

  5. Werten Sie die empfangenen Daten aus.

            <process the data>

  6. 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.