# SAP Batch Data Communication 시작 전..
2024.06.27 - [.SAP/..ABAP] - SAP BDC(Batch Data Communication) 정리 - 1
# 우리가 생각하고 넘어갈 것은..
# 레코딩 #
- 프로그램과 화면, 시작 ID가 시작하는 부분을 다음과 같은 방식으로 나누게 된다.
# 00. BDC 프로그램 시작하기 전.. 로직 생성
# 00. TOP 설정
- BDC를 사용하기 위해서는 다음과 같이 BDC 관련된 변수들을 설정해 보자.
*--------------------------------------------------------------------*
* BDC
*--------------------------------------------------------------------*
DATA:
GT_BDCDATA TYPE STANDARD TABLE OF BDCDATA, " BDC 데이터 관련 "
GT_BDCMSG TYPE STANDARD TABLE OF BDCMSGCOLL, " BDC 메시지 관련 "
GS_OPT TYPE CTU_PARAMS. " BDC 옵션 관련 "
# 01. PERFORM 설정
- 우리가 앞으로 사용할 PERFORM이기 때문에 참고해 보자.
FORM BDC_DATA
USING
VALUE(P_SCREEN)
VALUE(P_NAME)
VALUE(P_VALUE).
DATA
LS_BDCDATA TYPE BDCDATA.
IF P_SCREEN EQ 'X'.
LS_BDCDATA-DYNBEGIN = P_SCREEN. " BDC screen start "
LS_BDCDATA-PROGRAM = P_NAME. " BDC Program "
LS_BDCDATA-DYNPRO = P_VALUE. " BDC Screen Number "
ELSE.
LS_BDCDATA-FNAM = P_NAME. " Field Name "
LS_BDCDATA-FVAL = P_VALUE. " BDC Field Value "
ENDIF.
APPEND LS_BDCDATA TO GT_BDCDATA.
CLEAR
LS_BDCDATA.
ENDFORM. " BDC_DATA "
- P_SCREEN : 스크린 시작점
- P_NAME : 필드 이름
- P_VALUE : 필드 값
여기서 P_SCREEN은 해당 사진에 스크린 시작점이라고 참고하자.
# 01. BDC 프로그램 로직 이어서
# 앞에서 엑셀 업로드까지 완료했으면 엑셀에 있는 값들이 인터널 테이블에 값이 있을 것이다.
- 우리가 상단에 있는 [BDC 실행]이라는 버튼을 눌렀을 때, ALV List에 있는 값들이 BDC를 타면서 실행을 할 수 있게 만들어볼 것이다.
# 00. 우선 레코딩에 따라서 [한 번만 도는 로직]과 [반복적으로 도는 로직]으로 나누어야 한다. ( 기억이 안 나면 BDC-1 편을 보고 오자 )
# BDC 버튼을 눌렀을 때 다음과 같이 한 번만 실행했을 경우는 다음과 같이 넣는다.
# [ 한 번만 도는 로직 ] #
# 반복적인 로직은 LOOP문을 통해서 데이터를 쌓아두자.
# [ 반복적으로 도는 로직 ] #
# 01. 이제 BDC Options을 선택해주어야 한다.
- [ CTU_PARAMS ] Type을 사용해서 BDC Options을 설정해 보자.
# 다음과 같이 설정하였다.
GS_OPT-DISMODE = 'E'.
GS_OPT-UPDMODE = 'S'.
GS_OPT-CATTMODE = ' '.
GS_OPT-DEFSIZE = 'X'.
GS_OPT-NOBINPT = ' '.
GS_OPT-NOBIEND = ' '.
GS_OPT-RACOMMIT = 'X'.
# 02. 이제 실행시킬 프로그램 T-CODE를 설정하고 Options과 Message는 다음과 같이 설정해 보자.
CALL TRANSACTION 'ZRCUSTOM_01_'
USING GT_BDCDATA
OPTIONS FROM GS_OPT
MESSAGES INTO GT_BDCMSG.
# 03. BDC를 돌리면서 발생하였던 성공/오류 메시지를 확인해 보자.
# 여기서 중요한 것은 트랜잭션마다 성공/오류 메시지가 다 다르기 때문에 디버깅 돌리면서 확인을 해야 한다.
예를 들어 )
- 전표를 전기 했을 때, 성공하면 다음과 같이 Message ID, NO, TYPE이 달라지게 된다.
- 개별 항목을 변경했을 때, 이런 식으로 달라지게 된다.
# 그렇기 때문에 상황에 따라 ID와 NO을 다르게 설정해야 한다.
# 메시지를 ALV에 뿌려줘야 하기 때문에 다음과 같이 설정하였다.
DATA:
L_TABIX TYPE SY-TABIX.
LOOP AT GT_BDCMSG
WHERE MSGTYP EQ 'S'.
L_TABIX = SY-TABIX.
GS_LIST-ICON = ICON_LED_GREEN.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = GT_BDCMSG-MSGID
MSGNR = GT_BDCMSG-MSGNR
MSGV1 = GT_BDCMSG-MSGV1
MSGV2 = GT_BDCMSG-MSGV2
MSGV3 = GT_BDCMSG-MSGV3
MSGV4 = GT_BDCMSG-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = GS_LIST-RETMG.
MODIFY GT_LIST FROM GS_LIST INDEX L_TABIX
TRANSPORTING ICON RETMG.
ENDLOOP.
#02. 밑 부분 전체적인 로직
끝..!
'.ABAP > ..BDC, BAPI' 카테고리의 다른 글
SAP Function Module 에서 Commit Work 하기( BAPI ) (0) | 2024.11.11 |
---|---|
SAP BDC(Batch Data Communication) 정리 - 1 (2) | 2024.06.27 |
SAP BAPI란 (0) | 2023.03.03 |
BDC vs BAPI 차이점 (0) | 2022.01.13 |