!--a11y-->
qRFC mit Outbound Queue 
Eine qRFC-Kommunikation ist eine erweiterte tRFC-Kommunikation. Zum transaktionalen Verhalten des tRFC kommt beim qRFC noch die Serialisierung innerhalb einer Queue hinzu. Betrachten Sie nun das Programmierbeispiel einer qRFC-Kommunikation mit Outbound Queue (optionale Parameter sind in Blau dargestellt):
report rstrfct0. ...
call function ‘TRFC_SET_QUEUE_NAME’. EXPORTING QNAME = ‘QUEUE1’ * NOSEND = ' ' * TRFC_IF_SYSFAIL = ' ' * CALL_EVENT = ' ' * EXCEPTIONS * INVALID_QUEUE_NAME = 1 * OTHERS = 2 . call function ’RFC_FUNCTION’ destination RFCDEST in background task ( as separate unit ) exporting ... tables ...
...
commit work.
|
Legen Sie den Queue-Namen durch Aufruf eines der folgenden Funktionsbausteine fest:
· TRFC_SET_QUEUE_NAME
· TRFC_SET_QUEUE_RECEIVER_LIST (Inbound Queue)
· TRFC_SET_QUEUE_NAME_LIST (Outbound Queue)
Rufen Sie den tRFC auf (Call Function … in Background Task)
Zum Commit Work-Zeitpunkt wird ein Zähler für die LUW vom qRFC-Manager erstellt.
Serialisierung über den Queue Identifier
(Client, Q-Name, Destination & Q-Counter)
Beziehung zwischen LUW & TID
· Jede Anwendung-LUW beginnt mit dem ersten Call Function … in Background Task (tRFC-Call) und endet mit dem ersten Commit Work.
· Jede LUW kann verschiedene SubLUWs beeinhalten.
· Eine SubLUW enthält:
¡ Einen tRFC-Aufruf, wenn die Option AS SEPARATE UNIT verwendet wurde.
· Eine Transaktions-ID (TID) wird einer SubLUW zugewiesen.
· Eine LUW kann tRFC- und qRFC-Aufrufe enthalten (mixed mode)
Es gibt Queue-API in der Form von Funktionsbausteinen um
die Queues zu verwalten, wie z.B. lock, unlock, activate oder ask for queue state.
Die Ausführung von qRFC-LUWs im empfangenden
System unter einem anderen SAP-Benutzer ist möglich, wenn kein Benutzer in der
SM59 für die gerade verwendete
Destination eingetragen wurde.
Für Anwendungen die den qRFC mit Outbound
Queue für eine bessere Systemperformance und nicht zur Serialisierung
verwenden gilt: Ein automatischer Wechsel von der qRFC-LUW mit Outbound Queue
in die tRFC-LUW ist möglich, um eine „hängende“ Queue im Fall
eines SYSTEM_FAILURE zu vermeiden.