ABAP BDC

Updated:

1. Bulk Data Communication: 클릭

약어로 BDC라고 불리며, 대량의 데이터를 유지보수 할 때 사용하는 standard 기능이다. Recording 기능으로 알려져 있다.

  • T-CODE: SHDB

예를 들어 자재마스터 정보를 변경 가능한 프로그램인 MM02에 접속해서 100개의 데이터를 수정해야 하는 상황이다. 하나씩 수정한다면 시간이 오래 걸림은 물론 실수의 가능성도 높아진다. 따라서 1 transaction(작업)을 반복해서 실행(standard 기준)하는 기능이다.

image

Recording을 생성할 이름과 시작할 T-code를 넣어준다.

image


입력한 T-Code 화면으로 넘어가며, BDC는 transaction 동작을 기준으로 반복된다.

image
image
image

저장과 동시에 Record가 끝나고, 다음과 같은 기록을 보여준다. 혹 SHDB로 들어가서 확인할 수도 있다.

SUB라고 적힌 Subscreen은 불필요한 recording이기 때문에 지워주고, 이 때 모든 SUB를 지울 것이냐는 창이 뜬다. 확인을 눌러준다.

SUB를 지운 record는 다음과 같다. 이대로 활용해도 되지만, 변수명 혹 코드명의 경우 겹쳐 사용이 안되기 때문에 (ex. clsap24_f_0001) 이 값만 바꿔서 record 실행이 가능하다.

image

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.