Show TOC

BeispieldokumentationBeispiele für Inbound und Outbound Dieses Dokument in der Navigationsstruktur finden

 

Die folgenden einfachen Beispiele sollen die Verwendung des neuen API verdeutlichen:

  • bgRFC Typ t Outbound

  • bgRFC Typ q Outbound

  • bgRFC Typ q Outbound nach Inbound

  • bgRFC Typ t Inbound

  • bgRFC Typ q Inbound

bgRFC Typ t Outbound

Dieses Beispiel erzeugt eine bgRFC-Unit Typ t, welche zwei Funktionsbaustein-Aufrufe enthält und per Outbound-Scheduler an ein entferntes System geschickt wird.

Syntax Syntax

  1. DATA: my_destination TYPE REF TO if_bgrfc_destination_outbound,
  2.       my_unit        TYPE REF TO if_trfc_unit_outbound,
  3.       dest_name      TYPE bgrfc_dest_name_outbound.
  4. dest_name = 'MY_DEST'.
  5. my_destination = cl_bgrfc_destination_outbound=>create( dest_name ).
  6. my_unit = my_destination->create_trfc_unit( ).
  7. CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
  8. CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
  9. COMMIT WORK.
Ende des Codes
qRFC Typ q Outbound

Dieses Beispiel erzeugt eine bgRFC-Unit Typ q, welche zwei Funktionsbaustein-Aufrufe enthält und per Outbound-Scheduler in ein entferntes System geschickt wird. Dabei werden Queue-Namen für die Serialisierung von Units verwendet. Gleichzeitig wird gezeigt, wie Ausnahmen abgefangen werden können, um auf Fehlersituationen zu reagieren. In diesem Beispiel werden die Queue-Namen nachträglich bekannt gegeben. Technisch ist dies korrekt, aber die Wartbarkeit der Programme kann leiden.

Syntax Syntax

  1. DATA: my_destination TYPE REF TO if_bgrfc_destination_outbound,
  2.       my_unit        TYPE REF TO if_qrfc_unit_outbound,
  3.       dest_name      TYPE bgrfc_dest_name_outbound,
  4.       queue_name     TYPE qrfc_queue_name,
  5.       queue_names    TYPE qrfc_queue_name_tab.
  6. TRY.
  7.     dest_name = 'MY_DEST'.
  8.     my_destination = cl_bgrfc_destination_outbound=>create( dest_name ).
  9.   CATCH cx_bgrfc_invalid_destination.
  10.     MESSAGE e102(bc).
  11. ENDTRY.
  12. my_unit = my_destination->create_qrfc_unit( ).
  13. TRY.
  14.     CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
  15.     my_unit->add_queue_name_outbound( 'DEBITOR-1234' ).
  16.     CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
  17.     queue_name = 'PRODUCT-4711'.
  18.     INSERT queue_name INTO TABLE queue_names.
  19.     queue_name = 'PRODUCT-5432'.
  20.     INSERT queue_name INTO TABLE queue_names.
  21.     my_unit->add_queue_names_outbound( queue_names ).
  22.   CATCH cx_qrfc_duplicate_queue_name.
  23.     MESSAGE e101(bc).
  24. ENDTRY.
  25. COMMIT WORK.
Ende des Codes
bgRFC Typ q Outbound nach Inbound

Das nächste Beispiel erzeugt eine bgRFC-Unit Typ q, welche zwei Funktionsbaustein-Aufrufe enthält und per Outbound-Scheduler an ein entferntes System geschickt wird. Dort soll es in die Inbound-Queue gestellt werden. Dabei werden Queue-Namen für die Serialisierung von Units verwendet. Gleichzeitig wird gezeigt, wie die Ausnahme, die bei doppelten Queue-Namen ausgelöst wird, über den Parameter IGNORE_DUPLICATES unterdrückt werden kann.

Syntax Syntax

  1. DATA: my_destination TYPE REF TO if_bgrfc_destination_outbound,
  2.       my_unit        TYPE REF TO if_qrfc_unit_outinbound,
  3.       dest_name      TYPE bgrfc_dest_name_outbound,
  4.       queue_name     TYPE qrfc_queue_name,
  5.       queue_names    TYPE qrfc_queue_name_tab.
  6. TRY.
  7.     dest_name = 'MY_DEST'.
  8.     my_destination = cl_bgrfc_destination_outbound=>create( dest_name ).
  9.   CATCH cx_bgrfc_invalid_destination.
  10.     MESSAGE e102(bc).
    ENDTRY.
  11. my_unit = my_destination->create_qrfc_unit_outinbound( ).
  12. CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
  13. CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
  14. queue_name = 'DEBITOR-1234'.
  15. INSERT queue_name INTO TABLE queue_names.
  16.     queue_name = 'PRODUCT-4711'.
  17. INSERT queue_name INTO TABLE queue_names.
  18.     queue_name = 'PRODUCT-5432'.
  19. INSERT queue_name INTO TABLE queue_names.
  20. my_unit->add_queue_names_outbound( queue_names = queue_names
  21.                                    ignore_duplicates = abap_true ).
  22. my_unit->add_queue_names_inbound( queue_names = queue_names
  23.                                   ignore_duplicates = abap_true ).
  24. COMMIT WORK.
  25.  
Ende des Codes
bgRFC Typ t Inbound

Dieses Beispiel erzeugt eine bgRFC-Unit Typ t, welche zwei Funktionsbaustein-Aufrufe enthält und per Inbound-Scheduler im selben System verarbeitet werden soll.

Syntax Syntax

  1. DATA: my_destination TYPE REF TO if_bgrfc_destination_inbound,
  2.       my_unit        TYPE REF TO if_trfc_unit_inbound,
  3.       dest_name      TYPE bgrfc_dest_name_inbound.
  4. dest_name = 'MY_DEST'.
  5. my_destination = cl_bgrfc_destination_inbound=>create( dest_name ).
  6. my_unit = my_destination->create_trfc_unit( ).
  7. CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
  8. CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
  9. COMMIT WORK.
Ende des Codes
bgRFC Typ q Inbound

Nun noch ein Beispiel für den bgRFC Typ q Inbound-Fall. Gegenüber dem bgRFC Typ t-Beispiel kommt die Verwendung von Queue-Namen hinzu und damit auch die Verwendung der Methode create_qrfc_unit anstatt create_trfc_unit.

Syntax Syntax

  1. DATA: my_destination TYPE REF TO if_bgrfc_destination_inbound,
  2.       my_unit        TYPE REF TO if_qrfc_unit_inbound,
  3.       queue_name     TYPE qrfc_queue_name,
  4.       queue_names    TYPE qrfc_queue_name_tab,
  5.       dest_name      TYPE bgrfc_dest_name_inbound.
  6. dest_name = 'MY_DEST'.
  7. my_destination = cl_bgrfc_destination_inbound=>create( dest_name ).
  8. my_unit = my_destination->create_qrfc_unit( ).
  9. TRY.
  10.     CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
  11.     my_unit->add_queue_name_inbound( 'DEBITOR-1234' ).
  12.     CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
  13.     queue_name = 'PRODUCT-4711'.
  14.     INSERT queue_name INTO TABLE queue_names.
  15.     queue_name = 'PRODUCT-5432'.
  16.     INSERT queue_name INTO TABLE queue_names.
  17.     my_unit->add_queue_names_inbound( queue_names ).
  18.   CATCH cx_qrfc_duplicate_queue_name.
  19.     MESSAGE e101(bc).
  20. ENDTRY.
  21. COMMIT WORK.
  22.  DATA
Ende des Codes