Abschließend noch ein Beispiel, in dem mehrere Units parallel gefüllt werden. Die Reihenfolge in der Verarbeitung ergibt sich durch die Reihenfolge der Anforderung der Units. Unit-2 hat in diesem Beispiel also Priorität vor Unit-1. Da sich beide Units über gleiche Queue-Namen serialisieren, ergibt sich eine Reihenfolgeabhängigkeit. Würden unterschiedliche Queue-Namen verwendet, dann könnte beide Units parallel verarbeitet werden.
DATA: my_destination TYPE REF TO
if_bgrfc_destination_outbound,
my_unit_1
TYPE REF TO if_qrfc_unit_outbound,
my_unit_2
TYPE REF TO if_qrfc_unit_outbound,
dest_name
TYPE bgrfc_dest_name_outbound,
queue_name
TYPE qrfc_queue_name,
queue_names
TYPE qrfc_queue_name_tab.
TRY.
dest_name =
'MY_DEST'.
my_destination =
cl_bgrfc_destination_outbound=>create( dest_name ).
CATCH
cx_bgrfc_invalid_destination.
MESSAGE e102(bc).
ENDTRY.
my_unit_2 = my_destination->create_qrfc_unit( ).
my_unit_1 = my_destination->create_qrfc_unit( ).
CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit_1.
CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit_2.
queue_name = 'DEBITOR-1234'.
INSERT queue_name INTO TABLE queue_names.
queue_name =
'PRODUCT-4711'.
INSERT queue_name INTO TABLE queue_names.
queue_name =
'PRODUCT-5432'.
INSERT queue_name INTO TABLE queue_names.
my_unit_1->add_queue_names_outbound( queue_names = queue_names
ignore_duplicates
= abap_true ).
my_unit_2->add_queue_names_outbound( queue_names = queue_names
ignore_duplicates = abap_true ).
COMMIT WORK.