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:

 

BeispielbgRFC 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.

 

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 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.

 

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.
    queue_name = 'PRODUCT-4711'.
    INSERT queue_name INTO TABLE queue_names.
    queue_name = 'PRODUCT-5432'.
    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.

 

BeispielbgRFC 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.

 

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'.
INSERT queue_name INTO TABLE queue_names.
    queue_name = 'PRODUCT-5432'.
INSERT queue_name INTO TABLE queue_names.
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.

 

 

BeispielbgRFC 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.

 

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.

 

BeispielbgRFC 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.

 

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,

      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_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'.
    INSERT queue_name INTO TABLE queue_names.
    queue_name = 'PRODUCT-5432'.
    INSERT queue_name INTO TABLE queue_names.
    my_unit->add_queue_names_inbound( queue_names ).
  CATCH cx_qrfc_duplicate_queue_name.
    MESSAGE e101(bc).
ENDTRY.
COMMIT WORK.

 DATA

 

Ende des Inhaltsbereichs