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.