Show TOC Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Beispiele für Inbound und Outbound Dokument im Navigationsbaum lokalisieren

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

 

BeispieltRFC Outbound

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

 

DATA: my_destination TYPE REF TO if_bgrfc_destination_outbound,
      my_unit        TYPE REF TO if_trfc_unit_outbound,
      dest_name      TYPE bgrfc_dest_name_outbound.

dest_name = 'MY_DEST'.
my_destination = cl_bgrfc_destination_outbound=>create( dest_name ).
my_unit = my_destination->create_trfc_unit( ).
CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
COMMIT WORK.

BeispielqRFC Outbound

Dieses Beispiel erzeugt eine qRFC-Unit, 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.

 

DATA: my_destination TYPE REF TO if_bgrfc_destination_outbound,
      my_unit        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 = my_destination->create_qrfc_unit( ).
TRY.
   
CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
    my_unit->add_queue_name_outbound( 'DEBITOR-1234' ).
    CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
    INSERT queue_name INTO TABLE queue_names.

    my_unit->add_queue_names_outbound( queue_names ).
  CATCH cx_qrfc_duplicate_queue_name.
   
MESSAGE e101(bc).
ENDTRY.
COMMIT WORK.

BeispielqRFC Outbound nach Inbound

Das nächste Beispiel erzeugt eine qRFC-Unit, 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.

 

DATA: my_destination TYPE REF TO if_bgrfc_destination_outbound,
      my_unit        TYPE REF TO if_qrfc_unit_outinbound,
      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 = my_destination->create_qrfc_unit_outinbound( ).
CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
queue_name = 'DEBITOR-1234'.
INSERT queue_name INTO TABLE queue_names.
queue_name = 'PRODUCT-4711'.
my_unit->add_queue_names_outbound( queue_names = queue_names
                                   ignore_duplicates = abap_true ).
my_unit->add_queue_names_inbound( queue_names = queue_names
                                  ignore_duplicates = abap_true ).
COMMIT WORK.

BeispieltRFC Inbound

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

 

DATA: my_destination TYPE REF TO if_bgrfc_destination_inbound,
      my_unit        TYPE REF TO if_trfc_unit_inbound,
      dest_name      TYPE bgrfc_dest_name_inbound.

dest_name = 'MY_DEST'.
my_destination = cl_bgrfc_destination_inbound=>create( dest_name ).
my_unit = my_destination->create_trfc_unit( ).
CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
COMMIT WORK.

Die Verwendung einer bestimmten Destination im Inbound ist zwingend erforderlich!

 

DATA: my_destination TYPE REF TO if_bgrfc_destination_inbound,
      my_unit        TYPE REF TO if_trfc_unit_inbound.

my_destination = cl_bgrfc_destination_inbound=>create( ).
my_unit = my_destination->create_trfc_unit( ).
CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
COMMIT WORK.

BeispielqRFC Inbound

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

 

DATA: my_destination TYPE REF TO if_bgrfc_destination_inbound,
      my_unit        TYPE REF TO if_qrfc_unit_inbound,
      queue_name     TYPE qrfc_queue_name,
      queue_names    TYPE qrfc_queue_name_tab.

my_destination = cl_bgrfc_destination_inbound=>create( ).
my_unit = my_destination->create_qrfc_unit( ).
TRY.
    CALL FUNCTION ’rfc_function_1’ IN BACKGROUND UNIT my_unit.
    my_unit->add_queue_name_inbound( 'DEBITOR-1234' ).
    CALL FUNCTION ’rfc_function_2’ IN BACKGROUND UNIT my_unit.
    queue_name = 'PRODUCT-4711'.
    my_unit->add_queue_names_inbound( queue_names ).
  CATCH cx_qrfc_duplicate_queue_name.
    MESSAGE e101(bc).
ENDTRY.
COMMIT WORK.

 

Ende des Inhaltsbereichs