Show TOC

ProtokolleLocate this document in the navigation structure

Verwendung

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

Integration

Die ABAP-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-Proxys unterschiedlich.

Weitere Informationen über ABAP Objects Interfaces finden Sie unter Interfaces.

Namenskonventionen

Alle Protokoll-Klassen haben die folgenden Eigenschaften:

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

  • Alle Protokoll-Klassen beginnen 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

Die Protokoll-Konstante in IF_WSPROTOCOL ist PAYLOAD. Das entsprechende Interface für die Protkoll-Klasse ist IF_WSPROTOCOL_PAYLOAD.

Um auf das Protokoll in diesem Beispiel zuzugreifen, verwenden Sie die Protokoll-Konstante IF_WSPROTOCOL=>PAYLOAD.

Unterstützte Protokolle der ABAP-Proxy-Laufzeit

Die folgende Tabelle gibt eine Übersicht über die verfügbaren Protokolle und unterstützten Laufzeiten. Wenn Sie mit GET_PROTOCOL ein Protokoll anfordern, das die verwendete Laufzeit nicht unterstützt, löst die Methode eine Ausnahme aus.

Protokoll-Konstante in IF_WS_PROTOCOL

Durch XI-Laufzeit unterstützt (kompatibel mit Interface-Pattern XI 3.0)

Durch Web-Service-Laufzeit unterstützt

Verwendung

Weitere Informationen

ASYNC_MESSAGING

Ja

Nein

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

Siehe SAP Help Portal > SAP NetWeaver > Proxy-Programmierung

ROUTING

Ja

Nein

Setzen des Empfängers und andere Routing-Services.

ATTACHMENTS

Ja

Ja

Austausch von Message-Attachments.

XI_HEADER

Ja

Nein

Zugriff auf XI-spezifische Felder des Message-Headers.

PAYLOAD

Ja

Nur XML-Handling, keine Abfrage der Payload

Erweitertes XML-Handling, z.B. für die Abfrage von Initialwerten und xsd:nil. Es kann auch für die Abfrage der Payload werden.

Erweitertes XML-Handling aktivieren

Abfragen der Payload

MESSAGE_ID

Ja

Ja (falls konfiguriert)

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

Auf die Message-ID zugreifen

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.

Es wird empfohlen, 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).

WS_HEADER

IBC

Nein

Ja

Holen des Sender- und Empfänger-IBC beim Service-Provider

Semantische Adressierung mit Identifiable Business Contexts (IBCs)

Funktionsumfang

Zugriff auf Protokoll-Klassen für Consumer-Proxys

Bei Consumer-Proxys 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-Proxys

Innerhalb der Implementation eines Provider-Proxys erhalten Sie 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 ). 
            

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

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

Methode

Verwendung

Weitere Informationen

GET_ACKNOWLEDGMENT

Lesen des Acknowledgment-Status zu einer Message über die Angabe der Message-ID.

Siehe SAP Help Portal > SAP NetWeaver > Proxy-Programmierung

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, den 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. Weitere Informationen finden Sie in der Klassen-Dokumentation für CL_PROXY_ACCESS (Verwendung von Objektverknüpfungen).