Datensätze mit RFC FuBa paketweise bekommen: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
 
Zeile 20: Zeile 20:
  ENDIF.
  ENDIF.
   
   
  "Wichtig für den SELECT in der DO-Schleife, damit neue Materialnummern selektiert werden.
  "Wichtig für den SELECT in der DO-Schleife, damit nur neue Materialnummern selektiert werden.
  gv_last_mat = gt_mara[ lines( gt_mara ) ].
  gv_last_mat = gt_mara[ lines( gt_mara ) ].
   
   

Aktuelle Version vom 10. Mai 2022, 14:14 Uhr

Dies ist ein einfaches Beispiel wie man paketweise Datensätze via RFC Baustein bekommen kann. Die Aufteilung in Paketen ist bei extrem vielen Datensätzen notwendig.

DO.
 "Wir selektieren die jeweiligen Materialnummern von der MARA
 "von dem System, der die Kurztexte vom Zielsystem abfragen möchte
 "Dabei wird Paketweise z.B. 1000 Datensätze selektiert und nur diese,
 "die nicht bereits für die Anfrage ausgewählt wurden.
 SELECT matnr FROM mara INTO TABLE @DATA(gt_mara)
             UP TO gv_packsize ROWS
             WHERE matnr IN gt_mat_range
               AND matnr > gv_last_mat
             ORDER BY matnr ASCENDING.

 "Unsere Return Bedingung. Wenn keine Datensätze mehr zu bearbeiten sind,
 "springen wir aus der DO-Schleife raus.
 IF sy-dbcnt = 0.
  EXIT.
 ENDIF.
 
 "Wichtig für den SELECT in der DO-Schleife, damit nur neue Materialnummern selektiert werden.
 gv_last_mat = gt_mara[ lines( gt_mara ) ].
 
 "Dieser FuBa ist im Zielsystem vorhanden.
 "Anhand der Materialnummer werden die Kurztexte gelesen und dem System übergeben,
 "der die Kurztexte anfragt.             
 CALL FUNCTION 'Z_GET_MAT_SHORTEXT' DESTINATION gv_rfc_dest
  EXPORTING
   it_matnr         = gt_mara
  IMPORTING
   et_matnr_maktx   = gt_matnr_maktx_dest
  EXCEPTIONS
   system_failure        = 1
   communication_failure = 2
   OTHERS                = 3.
 IF sy-subrc <> 0.
  RAISE EXCEPTION TYPE zcl_bal.
 ENDIF.

 "Hier kommt irgendeine Verarbeitung mit der gt_matnr_maktx_dest...

ENDO.