ABAP BDC
Updated:
1. Bulk Data Communication: 클릭
약어로 BDC라고 불리며, 대량의 데이터를 유지보수 할 때 사용하는 standard 기능이다. Recording 기능으로 알려져 있다.
- T-CODE: SHDB
예를 들어 자재마스터 정보를 변경 가능한 프로그램인 MM02에 접속해서 100개의 데이터를 수정해야 하는 상황이다. 하나씩 수정한다면 시간이 오래 걸림은 물론 실수의 가능성도 높아진다. 따라서 1 transaction(작업)을 반복해서 실행(standard 기준)하는 기능이다.
Recording을 생성할 이름과 시작할 T-code를 넣어준다.
입력한 T-Code 화면으로 넘어가며, BDC는 transaction 동작을 기준으로 반복된다.
저장과 동시에 Record가 끝나고, 다음과 같은 기록을 보여준다. 혹 SHDB로 들어가서 확인할 수도 있다.
SUB라고 적힌 Subscreen은 불필요한 recording이기 때문에 지워주고, 이 때 모든 SUB를 지울 것이냐는 창이 뜬다. 확인을 눌러준다.
SUB를 지운 record는 다음과 같다. 이대로 활용해도 되지만, 변수명 혹 코드명의 경우 겹쳐 사용이 안되기 때문에 (ex. clsap24_f_0001) 이 값만 바꿔서 record 실행이 가능하다.
2. Bulk Data Communication: 코드
위의 과정은 T-Code로 접속하여 프로그램 실행 후 마우스를 클릭하는 것이 기록되었다면, ABAP 코드를 작성해서 실행하는 방법도 알아보자. 다음 코드를 통해 생성된 BDC는 T-Code SHDB에서 기록 확인이 가능하다. 이와 같은 BDC를 통해 비밀번호 일괄 변경과 같은 작업이 가능하다.
- T-Code LSMW: 프로젝트 때 사용하는 대량 유지보수 프로그램
- T-Code MM17: 마스터 데이터를 한번에 유지보수하는 프로그램
*&---------------------------------------------------------------------*
*& Report ZBDC
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zbdc.
*SHDB : Recording Overview
*BDC
DATA: ctu_params LIKE ctu_params,
gt_bdc LIKE TABLE OF bdcdata WITH HEADER LINE,
gt_msg LIKE TABLE OF bdcmsgcoll WITH HEADER LINE.
PARAMETERS : p_dev TYPE string,
p_fname TYPE string,
p_lname TYPE string.
*BDC 처리모드(dismode)
* A : 모든화면 조회
* E : 오류 조회
* N : 백그라운드 처리
* P : 백그라운드 처리: 디버깅 가능
ctu_params-dismode = 'A'.
*BDC Transcation Mode
*L : 로컬
*S : 동기
*A : 비동기
ctu_params-updmode = 'L'.
PERFORM bdc_append_data USING : 'X' 'SAPLSUID_MAINTENANCE' '1050',
' ' 'BDC_OKCODE' '=CHAN',
' ' 'SUID_ST_BNAME-BNAME' p_dev.
PERFORM bdc_append_data USING : 'X' 'SAPLSUID_MAINTENANCE' '1100',
' ' 'BDC_OKCODE' '/00',
' ' 'SUID_ST_NODE_PERSON_NAME-NAME_LAST' p_lname,
' ' 'SUID_ST_NODE_PERSON_NAME-NAME_FIRST' p_fname.
PERFORM bdc_append_data USING : 'X' 'SAPLSUID_MAINTENANCE' '1100',
' ' 'BDC_OKCODE' '=UPD',
' ' 'SUID_ST_NODE_PERSON_NAME-NAME_LAST' p_lname,
' ' 'SUID_ST_NODE_PERSON_NAME-NAME_FIRST' p_fname.
CALL TRANSACTION 'SU01' USING gt_bdc
OPTIONS FROM ctu_params MESSAGES INTO gt_msg.
MESSAGE s000(zabap) WITH '정상적으로 처리 되었습니다.'.
*&---------------------------------------------------------------------*
*& Form BDC_APPEND_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0010 text
* -->P_0011 text
* -->P_0012 text
*----------------------------------------------------------------------*
FORM bdc_append_data USING p_dynbegin
p_name
p_value.
CLEAR : gt_bdc.
IF p_dynbegin = 'X'.
gt_bdc-program = p_name.
gt_bdc-dynpro = p_value.
gt_bdc-dynbegin = p_dynbegin.
ELSE.
gt_bdc-fnam = p_name.
gt_bdc-fval = p_value.
ENDIF.
APPEND gt_bdc.
ENDFORM.