이전 글에서 BDC에 대한 설명을 하면서 BDC 프로그램 유형으로 ‘세션 처리에 의한 배치(Batch) 실행 방법의 BDC‘와 ‘CALL TRANSACTION 처리에 의한 온라인(실시간) 처리 방법의 BDC‘ 이렇게 2가지 유형에 대해 설명한 적이 있습니다.
ABAP BDC 프로그램의 유형에 대한 자세한 설명은 SAP BDC(Batch Data Communication, Batch Input) 이해하기 글을 참고하시기 바랍니다.
이번 글에서는 ABAP BDC 프로그램의 세션 처리에 의한 배치(Batch) 실행에 대한 예제를 배워보겠습니다.
BDC 프로그램 예제 소스
– 소스에서 빨간색으로 표시한 부분을 잘 보시면 CALL TRANSACTION으로 돌리는 BDC와 다른점을 발견할 수 있습니다.
PROGRAM ZBDC0001.
DATA: BEGIN OF IT_DATA OCCURS 0,
MATNR LIKE MARA-MATNR, “자재번호
MAKTX LIKE MAKT-MAKTX, “자재내역
BISMT LIKE MARA-BISMT, “기존자재번호
END OF IT_DATA.
*– BDC DATA
DATA : BEGIN OF BDC_TAB OCCURS 5000.
INCLUDE STRUCTURE BDCDATA.
DATA : END OF BDC_TAB.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-T01.
PARAMETERS: NAME LIKE APQI-GROUPID DEFAULT ‘MM02’.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME DEFAULT ‘C:\TEMP\’,
P_MODE(1) TYPE C DEFAULT ‘N’.
SELECTION-SCREEN END OF BLOCK B1.
*———————————————————————*
START-OF-SELECTION.
*—– 세션 생성
CALL FUNCTION ‘BDC_OPEN_GROUP’
EXPORTING
CLIENT = SY-MANDT
GROUP = NAME
KEEP = ‘X’
USER = SY-UNAME.
*— 파일 업로딩
PERFORM UPLOAD_DATA.
*— BDC 데이터 만들기
PERFORM BDC_MM02.
*&———————————————————————*
*& Form UPLOAD_DATA
*&———————————————————————*
FORM UPLOAD_DATA .
DATA: LV_FILE TYPE STRING,
LV_FILE_TABLE TYPE TABLE OF FILE_TABLE,
LV_FILETABLE TYPE FILE_TABLE,
LV_RC TYPE I,
LV_P_DEF_FILE TYPE STRING,
LV_USR_ACT TYPE I,
LV_CNT TYPE I.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
DEFAULT_FILENAME = LV_P_DEF_FILE
CHANGING
FILE_TABLE = LV_FILE_TABLE
RC = LV_RC
USER_ACTION = LV_USR_ACT
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC = 0 AND LV_USR_ACT <> CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.
LOOP AT LV_FILE_TABLE INTO LV_FILETABLE.
LV_FILE = LV_FILETABLE.
EXIT.
ENDLOOP.
CALL FUNCTION ‘GUI_UPLOAD’
EXPORTING
FILENAME = LV_FILE
FILETYPE = ‘DAT’
TABLES
DATA_TAB = IT_DATA.
ENDIF.
ENDFORM. ” UPLOAD_DATA
*&———————————————————————*
*& Form BDC_MM02
*&———————————————————————*
FORM BDC_MM02 .
LOOP AT IT_DATA.
CLEAR: BDC_TAB. REFRESH BDC_TAB.
PERFORM DYNPRO USING:
‘X’ ‘SAPLMGMM’ ‘0060’,
‘ ‘ ‘RMMG1-MATNR’ IT_DATA-MATNR,
‘ ‘ ‘BDC_OKCODE’ ‘=ENTR’.
PERFORM DYNPRO USING:
‘X’ ‘SAPLMGMM’ ‘0070’,
‘ ‘ ‘MSICHTAUSW-KZSEL(01)’ ‘X’,
‘ ‘ ‘BDC_OKCODE’ ‘=ENTR’.
PERFORM DYNPRO USING:
‘X’ ‘SAPLMGMM’ ‘4004’,
‘ ‘ ‘MAKT-MAKTX’ IT_DATA-MAKTX,
‘ ‘ ‘MARA-BISMT’ IT_DATA-BISMT,
‘ ‘ ‘BDC_OKCODE’ ‘=BU’.
*— BDC 처리 데이터 만들기
CALL FUNCTION ‘BDC_INSERT’
EXPORTING
TCODE = ‘MM02’
TABLES
DYNPROTAB = BDC_TAB.
ENDLOOP.
*—- 세션 닫기
CALL FUNCTION ‘BDC_CLOSE_GROUP’.
*—- Batch Input : 세션 처리 Tcode 실행
CALL TRANSACTION ‘SM35’.
ENDFORM. ” BDC_MM02
*&———————————————————————*
*& Form DYNPRO
*&———————————————————————*
* text
*———————————————————————-*
* –>P_0251 text
* –>P_0252 text
* –>P_0253 text
*———————————————————————-*
FORM DYNPRO USING DYNBEGIN NAME VALUE.
IF DYNBEGIN = ‘X’.
CLEAR BDC_TAB.
MOVE : NAME TO BDC_TAB-PROGRAM,
VALUE TO BDC_TAB-DYNPRO,
‘X’ TO BDC_TAB-DYNBEGIN.
APPEND BDC_TAB.
ELSE.
CLEAR BDC_TAB.
MOVE : NAME TO BDC_TAB-FNAM,
VALUE TO BDC_TAB-FVAL.
APPEND BDC_TAB.
ENDIF.
ENDFORM. ” DYNPRO
|
BDC 프로그램 실행 화면
– 프로그램을 실행하면 NAME(세션 이름)과 업로딩할 파일을 선택하기 위한 입력이 표시되고 실행하게 되면 파일만 선택하면 BDC 데이터가 만들어지고 SM35 트랜잭션코드 화면을 띄우게 됩니다.
▼ 아래는 SM35(배치 입력: 세션 개요) 화면입니다.
– 세션을 선택하고 프로세스 아이콘을 클릭하여 실제 BDC 프로그램의 데이터 처리가 이루어 집니다.
– 처리과정을 로그를 통해 확인할 수 있습니다.
– SM35 티코드에 대한 설명은 다음에 작성해서 올려 놓겠습니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^