Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation Protokolle  Dokument im Navigationsbaum lokalisieren

Verwendung

Mit Protokollen können Sie zusätzliche Dienste der Laufzeit nutzen. Je nach verwendeter Laufzeit werden unterschiedliche Protokolle unterstützt.

Integration

Die Laufzeit stellt Protokolle über Klassen zur Verfügung, die ein ABAP Objects Interface implementieren. Der Zugriff auf diese Protokoll-Klassen ist für Provider- und Consumer-Proxies unterschiedlich (siehe unten).

Namenskonventionen

Alle Protokoll-Klassen haben die folgenden Eigenschaften:

      Sie implementieren ein ABAP Objects Interface und umfassen das Interface IF_WSPROTOCOL.

      Sie beginnen immer mit dem Präfix IF_WSPROTOCOL.

      Für jede Protokoll-Klasse gibt es eine Konstante bei den Interface-Attributen von IF_WSPROTOCOL.

      Der Name des implementierten ABAP Objects Interface ergibt sich aus dem Präfix und der Konstante aus den Interface-Attributen.

Beispiel

Protokoll-Konstante in IF_WSPROTOCOL

Zugehöriges Interface für die Protokoll-Klasse

PAYLOAD

IF_WSPROTOCOL_PAYLOAD

Um auf das Protokoll zuzugreifen, verwenden Sie in diesem Beispiel die Protokoll-Konstante IF_WSPROTOCOL=>PAYLOAD. Eine Übersicht über alle Protokoll-Klassen finden Sie unter Funktionsumfang.

Zugriff auf Protokoll-Klassen für Consumer-Proxies

Bei Consumer-Proxies greifen Sie über deren Methode GET_PROTOCOL auf die Protokoll-Klasse zu. Dazu ein Beispiel zum Protokoll IF_WSPROTOCOL_PAYLOAD:

DATA:
lo_clientProxy      TYPE REF TO co_clientProxy,
lo_payload_protocol TYPE REF TO if_wsprotocol_payload
lo_payload          TYPE REF TO if_ws_payload.

CREATE OBJECT lo_clientProxy.

* Get Protocol Class Using Method GET_PROTOCOL

lo_payload_protocol ?=
       lo_clientProxy->get_protocol( if_wsprotocol=>payload ).

CALL METHOD lo_clientProxy->execute_synchronous
            EXPORTING output  = ls_request
            IMPORTING input   = ls_response.

* Use Protocol Methods

lo_payload = lo_payload->get_sent_request_payload( ).

Zugriff auf Protokoll-Klassen für Provider-Proxies

Innerhalb der Implementation eines Provider-Proxies holen Sie sich die Protokoll-Klasse über die Methode CL_PROXY_ACCESS=>GET_SERVER_CONTEXT( ):

DATA:  lo_server_context   TYPE REF TO if_ws_server_context,
       lo_payload_protocol TYPE REF TO if_wsprotocol_payload.

lo_server_context   = cl_proxy_access=>get_server_context( ).
lo_payload_protocol =
     lo_server_context->get_protocol( 
if_wsprotocol=>payload ).

Funktionsumfang

Die folgende Tabelle gibt eine Übersicht über die verfügbaren Protokolle und welche Laufzeit sie unterstützt:

Hinweis

Wenn Sie mit GET_PROTOCOL ein Protokoll anfordern, dass die verwendete Laufzeit nicht unterstützt, löst die Methode eine Ausnahme aus.

Unterstützte Protokolle der ABAP-Proxy-Laufzeit

Protokoll-Konstante in IF_WS_PROTOCOL

Unterstützt durch

Verwendung

XI-Laufzeit

Web Services- Laufzeit

ASYNC_MESSAGING

Ja

Nein

Ermöglicht bei asynchroner Kommunikation den Quality of Service Exactly once in order und steuert die Verarbeitung von Acknowledgments.

ROUTING

Ja

Nein

Setzen des Empfängers und andere Routing-Dienste.

ATTACHMENTS

Ja

Ja

Austausch von Message-Attachments.

XI_HEADER

Ja

Nein

Zugriff auf Felder des Message-Headers, die spezifisch für XI sind.

PAYLOAD

Ja

Nur XML-Handling, keine Abfrage der Payload

Erweitertes XML-Handling (beispielsweise zur Abfrage von initialen Werten und xsd:nil); Abfrage der Payload

MESSAGE_ID

Ja

Ja
(falls konfiguriert)

Abfrage der Message-ID für die gesendete Message.

SESSION

Nein

Ja
(für Services mit Interface-Pattern stateful)

Aufbau oder Abbau einer Session auf Empfänger-Seite bei synchroner Kommunikation. Der Anmeldekontext kann über mehrere Aufrufe gehalten werden.

SAP empfiehlt, dieses Protokoll nur im Ausnahmefall zu verwenden.

WS_HEADER

Nein

Ja (nur auf der Consumer-Seite)

Zugriff auf Felder des Message-Headers, die spezifisch für Web Services sind (WS_Header).

 

Zugriff auf Protokoll-Klassen unabhängig von einer Proxy-Instanz (XI-Laufzeit)

Die Klasse CL_PROXY_ACCRESS bietet weitere Hilfsmethoden an, um auf Objekte der ABAP-Proxy-Laufzeit auch ohne Proxy-Instanz zugreifen zu können:

Methode

Verwendung

GET_ACKNOWLEDGMENT

Lesen des Acknowledgment-Status zu einer Message über die Angabe der Message-ID (siehe: Acknowledgments).

GET_PRE_ROUTING

Gibt ein Objekt vom Typ IF_WS_PRE_ROUTING zur Vorab-Empfängerermittlung für eine Proxy-Klasse zurück.

GET_PAYLOAD_HANDLER

Gibt einen Payload-Handler zurück, die Sie für das Rendering und Parsen der XML-Payload verwenden können.

GET_SERVER_CONTEXT

Siehe oben.

Außerdem können Sie mit weiteren Methoden der Klasse Beziehungen zwischen PI Messages und BOR-Anwendungsobjekten abspeichern. Siehe dazu die Klassen-Dokumentation von CL_PROXY_ACCESS (Verwendung Objektverkknüpfungen).

 

 

 

 

 

 

 

Ende des Inhaltsbereichs