Exactly
Once in Order garantieren
Exactly Once in Order bezeichnet einen Quality of Service, der sicherstellt, dass asynchrone Messages genau in der gleichen Reihenfolge beim Empfänger ankommen, wie sie abgeschickt wurden. Sie können einem asynchronen Client-Proxy einen Serialisierungskontext mitgeben. Der Serialisierungskontext ist ein String mit der maximalen Länge von 16 Zeichen (es sind nur Großbuchstaben und Ziffern erlaubt). Alle Messages mit dem gleichen Serialisierungskontext kommen dann in der gesendeten Reihenfolge an.

Es ist durch Namenskonventionen sicherzustellen, dass zwei verschiedene Komponenten unterschiedliche Serialisierungskontexte verwenden.
Im folgenden Beispiel wird eine asynchrone Message mit dem Serialisierungskontext PLM0000007_ORDER abgeschickt:
...
DATA:
* Reference variables for proxy and exception
class
lo_clientProxy TYPE REF TO
[generierte
Proxy-Klasse],
lo_sys_exception TYPE REF TO
cx_ai_system_fault,
lo_async_messaging TYPE REF TO
if_wsprotocol_async_messaging.
* Structures to set and get message content
ls_request TYPE
[Output-Message-Typ],
* create proxy client
CREATE OBJECT lo_clientProxy.
* specify queue id
lo_async_messaging ?=
lo_clientProxy->get_protocol( if_wsprotocol=>async_messaging ).
lo_async_messaging->set_serialization_context('PLM0000007_ORDER').
* do asynchronous client proxy call
CALL METHOD
lo_clientProxy->execute_asynchronous
EXPORTING
output = ls_request.
COMMIT WORK.
CATCH cx_ai_system_fault INTO lo_sys_exception.
* Error handling
ENDTRY.

Sie können einen einmal gesetzten Serialisierungskontext wieder über die Methode GET_SERIALIZATION_CONTEXT abfragen.