Filling Multiple Units in Parallel
To conclude, we show an example in which multiple units are filled at the same time. The units are processed in the same order as they were requested. In this example, unit 2 has priority over unit 1. Since both units are serialized by the same queue names, there is a sequence dependency. If different queue names were used, then both units could be processed in parallel.
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.