Szybkie napełnianie tablic BDC (Batch Input)

Batch input’y oraz instrukcja CALL TRANSACTION są nadal powszechnie wykorzystywane, mimo nowocześniejszych i szybszych metod, jak direct input czy BAPI, do księgowania danych w systemie SAP. Dane niezbędne do przetworzenia transakcji w tle są przekazywane w tablicy wewnętrznej o strukturze BDCDATA. Struktura BDCDATA zawiera następujące pola:

  • PROGRAM – nazwa programu
  • DYNPRO – numer ekranu
  • DYNBEGIN – równe X, jeśli PROGRAM i DYNPRO zawierają dane; puste jeśli FNAM i FVAL zawierają dane
  • FNAM – nazwa pola na ekranie
  • FVAL – wartość pola

Więcej o informacji o strukturze BDCDATA i jej wykorzystaniu znajdziesz na: Using the Batch Input Data Structure.

W programie wykorzystującym batch input czy CALL TRANSACTION bardzo istotne jest napełnianie tablicy BDCDATA w szybki i przejrzysty sposób. Poniższy kawałek kodu:

DATA: gt_bdc TYPE STANDARD TABLE OF bdcdata WITH HEADER LINE.

FORM bdc USING a b c.
CLEAR gt_bdc.

IF a = 'X'.
gt_bdc-program = b.
gt_bdc-dynpro = c.
gt_bdc-dynbegin = a.
ELSE.
gt_bdc-fnam = b.
WRITE C to gt_bdc-fval LEFT-JUSTIFIED.
ENDIF.

APPEND gt_bdc.
ENDFORM.

wykorzystuję od lat w następujący sposób:

REPORT ztest.

DATA: gt_bdc TYPE STANDARD TABLE OF bdcdata WITH HEADER LINE.

PERFORM bdc USING:
'X' '' '',
' ' '' '',
' ' '' '',
' ' '' '',
'X' '' '',
' ' '' '',
' ' '' '',
' ' '' ''.

FORM bdc USING a b c.
CLEAR gt_bdc.

IF a = 'X'.
gt_bdc-program = b.
gt_bdc-dynpro = c.
gt_bdc-dynbegin = a.
ELSE.
gt_bdc-fnam = b.
WRITE C to gt_bdc-fval LEFT-JUSTIFIED.
ENDIF.

APPEND gt_bdc.
ENDFORM.

Dzięki temu moje programy BDC są przejrzyste, zwarte i łatwe do debuggowania. Zachęcam Cię do korzystania z tego podejścia w swoich przyszłych programach SAP.

Zostaw komentarz