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.