Show TOC

FunktionsdokumentationProtokolle Dieses Dokument in der Navigationsstruktur finden

 

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

Ende des Beispiels.
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.

Asynchrone Kommunikation

ROUTING

Ja

Nein

Setzen des Empfängers und andere Routing-Services.

Routing

ATTACHMENTS

Ja

Ja

Austausch von Message-Attachments.

Attachments

XI_HEADER

Ja

Nein

Zugriff auf XI-spezifische Felder des Message-Headers.

Auslesen des XI-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

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:

Syntax Syntax

  1. DATA:
  2.   lo_clientProxy TYPE REF TO co_clientProxy,
  3.   lo_payload_protocol TYPE REF TO if_wsprotocol_payload
  4.   lo_payload        TYPE REF TO if_ws_payload.
  5. CREATE OBJECT lo_clientProxy.
  6. *Get Protocol Class Using Method GET_PROTOCOL
  7.   lo_payload_protocol ?= 
  8.   lo_clientProxy->get_protocol( if_wsprotocol=>payload ).
  9. CALL METHOD lo_clientProxy->execute_synchronous
  10.   EXPORTING output  = ls_request
  11.   IMPORTING input   = ls_response.
  12. *Use Protocol Methods
  13.   lo_payload = lo_payload->get_sent_request_payload( ).
Ende des Codes
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( ):

Syntax Syntax

  1. DATA:
  2.   lo_server_context TYPE REF TO if_ws_server_context,
  3.   lo_payload_protocol TYPE REF TO if_wsprotocol_payload.
  4. lo_server_context   = cl_proxy_access=>get_server_context( ).lo_payload_protocol = 
  5. lo_server_context->get_protocol( if_wsprotocol=>payload ).
Ende des Codes
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.

Acknowledgments

GET_PRE_ROUTING

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

Vorab-Empfängerermittlung

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