shw__00
[SAP ABAP] BDC & BAPI 본문
BDC는 교육기간에 학습도 하고, 전표치는 실습도 해봐서 알고 있었는데. 현업에서는 RFC를 통해 BAPI를 자주 사용한다 라고 들어서 BDC와 BAPI가 무엇이고 어떤 차이가 있는지, 그리고 후에 RFC까지 알아보는 시간을 가지려고 한다.
먼저 BAPI와 BDC는 SAP에서 데이터를 처리할 때 사용하는 대표적인 방법이다.
BAPI란?
SAP 시스템의 표준 인터페이스 함수로, SAP 내/외 시스템에서 비즈니스 기능(EX: 판매오더, 출고처리 등)을 직접 호출할 수 있다.
다른 SAP 시스템이나 외부 애플리케이션과의 통합을 용이하게 하여, 프로세스의 자동화를 위해 사용된다.
즉, RFC베이스다.
(ONLY SAP가 아니라, SAP와 타 시스템을 병행으로 사용하는 기업이 많기에 자주/많이 쓰인다고 한다)
특징으로는,
먼저 스탠다드에서만 사용이 가능하고,
트랜잭션 없이 DB에 직접 접근하여 속도가 빠르며, 일반적으로 소규모 데이터를 처리할 때 사용된다.
작동 구조는
- 파라미터 입력
- BAPI 호출
- 결과 처리 (리턴값 받기, 커밋,롤백 포함)
요소는
- Exporting: 호출 시 전달되는 입력값
- Importing: 호출 후 반환되는 결과값
- Tables: 대량 데이터의 입력/출력을 위해 사용되는 테이블 형태의 파라미터
- Return: BAPI 호출 결과 메시지(성공, 오류 등)

예시로
BAPI_SALESDOCUMENT_CHANGE의 IMPORT/TABLES를 한번 보도록 하자.


sapjoy 에서 바피사용이유에 대한 글이 있어 발췌.
BAPI 사용이유
RFC Function 과 Business Object 를 연결한 것이 BAPI이다.
1. 따라서 타시스템에서 SAP 를 Access 하거나 SAP 에서 SAP 를 Access 할 경우 BAPI 를 이용합니다.
2. 또한 대부분의 BAPI 가 Call Transaction 이 아니라 Table에 Direct Insert 를 하기 때문에 BDC 보다는 훨씬 빠르지요.
Performance 문제가 있는경우 BDC 대신에 BAPI 를 쓰기도 합니다.
3. Transaction "BAPI" 를 보면 SAP 에서 제공하는 BAPI Function 내역과 Parameter 에 대한 설명들이 있습니다.
4. BAPI도 일종의 Function 이기 때문에 TEST하려면 "SE37" 에 가서 TEST 가 가능합니다.
BDC(Batch data communication)란?
SAP 트랜잭션을 화면을 따라 자동으로 입력해주는 일종의 스크립트 기반 데이터 입력 방식으로, SAP GUI의 입력을 프로그램이 대신 입력하는 방식이다.
BDC는 크게 2개의 방식이 있는데,
하나는 Call transcation, 하나는 Session 방식이 있다.
Call Transaction 은 실시간으로 트랜잭션하는 방식이고(프로그램 내 메모리에서 바로 처리하는),
코드예시
CALL TRANSACTION 'XD01' USING lt_bdcdata MODE 'N' MESSAGES INTO lt_msg.
Session Method 은 데이터를 세션으로 모아두고 나중에 한번에 처리하는 (주로 대규모 데이터) 방식이다.
TCODE : SM35에서 실행
코드 예시
CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING group = 'ZKUNNR_UPLOAD'.
CALL FUNCTION 'BDC_INSERT' EXPORTING tcode = 'XD01' TABLES dynprotab = lt_bdcdata.
CALL FUNCTION 'BDC_CLOSE_GROUP'.



일반적으로, 두 방식 모두 SHDB에서 레코딩 떠서 BDCDATA 에 넣는다.
bdcdata 구
program = 'SAPMF02D' " 트랜잭션의 프로그램 이름
dynpro = '0100' " 화면 번호
dynbegin = 'X' " 새로운 화면 시작 표시
fnam = 'RF02D-KUNNR' " 화면 필드 이름
fval = '123456' " 입력할 값
다만 BAPI와 다르게 GUI에 의존하다 보니, 속도면이나 트랜잭션 의존성이 높은 편이다.
BDC와 BAPI, 데이터를 처리하는 것은 같지만 작동 방식도 다르고, 사용 환경이나, 언제 사용할 것인지 케이스가 많이 갈릴 것 같다. 일단 스탠다드면 BAPI, CBO의 경우는 BDC가 둘의 가장 큰 차이점이자 기준이 될 것 같다.
'ABAP' 카테고리의 다른 글
| [SAP ABAP] SMART FORMS (0) | 2025.07.28 |
|---|---|
| [SAP ABAP] BADI (2) | 2025.07.28 |
| [SAP ABAP] Enhancement - User Exit / Customer Exit (0) | 2025.07.28 |
| [SAP ABAP] RFC (0) | 2025.07.26 |