본문 바로가기
BAPI · BADI · RFC · Interface

[SAP ABAP] BADI · BAPI · BDC · EXIT 차이점 한 번에 정리

by Song.sh 2026. 5. 8.

SAP ABAP을 시작하면 자주 듣게 되는 약어가 몇 개 있습니다. BAPI, BADI, BDC, EXIT — 비슷해 보이지만 각자 역할과 사용 시점이 완전히 다릅니다.

 

이번 글에서는 이 네 개 개념의 차이를 한 번에 정리합니다.

입문자가 많이 헷갈리는 부분이라 첫 글로 정리해 두면 이후 깊이 있는 BAPI/BADI 글을 볼 때 훨씬 편합니다.


한 줄 정의

개념 풀어쓰기 한 줄 정의
BAPI Business Application Programming Interface SAP 표준 비즈니스 객체를 CRUD로 다룰 수 있게 해주는 표준 펑션
BADI Business Add-In SAP 표준 흐름의 특정 시점에 커스텀 로직을 끼워 넣는 확장 포인트
BDC Batch Data Communication SAP 화면 입력을 스크립트처럼 자동화해서 데이터를 다건/단건 등록하는 기술
EXIT User Exit / Customer Exit BADI보다 오래된 형태의 확장 포인트 (구식 SAP에 자주 쓰임)

핵심은 목적입니다. BAPI는 표준 객체를 다루는 도구, BADI/EXIT는 표준 흐름에 내 로직을 추가하는 확장 포인트, BDC는 화면 자동화 도구입니다.


BAPI — SAP 표준을 다루는 펑션

BAPI는 SAP가 표준으로 제공하는 비즈니스 객체 처리 펑션 모음입니다. 자재·구매 오더·고객·송장 등 SAP의 핵심 비즈니스 객체에 대해 생성·조회·변경·삭제(CRUD) 작업을 표준화된 인터페이스로 제공합니다.

특징

  • SAP Standard 객체에만 사용 가능 (CBO 객체에는 별도 펑션을 직접 만들어야 함)
  • 외부 시스템 연동 시 표준 진입점으로 자주 활용
  • 트랜잭션 화면을 거치지 않고 직접 데이터 조작 가능
  • 호출 후 반드시 BAPI_TRANSACTION_COMMIT 또는 BAPI_TRANSACTION_ROLLBACK 으로 트랜잭션 마무리 필요

자주 쓰는 BAPI 예시

  • BAPI_PO_CREATE1 — 구매 오더 생성
  • BAPI_MATERIAL_SAVEDATA — 자재 마스터 생성·변경
  • BAPI_USER_GET_DETAIL — 사용자 정보 조회
  • BAPI_BATCH_CREATE — 배치 생성

BADI — 표준 흐름에 내 로직 끼워 넣기

BADI는 SAP 표준 트랜잭션의 특정 시점(저장 직전, 검증 시점, 출력 직전 등)에 사용자가 만든 커스텀 로직을 호출해주는 확장 메커니즘입니다.

특징

  • 표준 코드를 직접 수정하지 않고 확장 가능 (수정 보조자 / Modification Assistant 영향 없음)
  • SAP 업그레이드 시에도 BADI 구현은 그대로 유지됨
  • 객체 지향(OOP) 기반 — 인터페이스를 구현하는 클래스 형태
  • 표준 트랜잭션 안에서 정의된 시점에만 호출됨

사용 예

  • 자재 마스터 저장 시 회사 표준 명명 규칙 검증
  • 구매 오더 생성 시 추가 필드 자동 채우기
  • 송장 출력 직전 부가 정보 추가

BADI 찾는 방법은 별도 글에서 다룰 예정입니다 — 보통 SE18(BAdI Builder), SE19(구현) 트랜잭션을 사용합니다.


BDC — 화면 입력 자동화

BDC는 사용자가 SAP 화면에서 손으로 입력하는 동작을 스크립트처럼 자동화해서 데이터를 다건 또는 단건으로 등록하는 기술입니다.

특징

  • Standard와 CBO 화면 모두 지원 (BAPI는 Standard만)
  • 표준 BAPI가 없는 트랜잭션도 BDC로 자동화 가능
  • 화면 흐름을 그대로 따라가기 때문에 트랜잭션 검증 로직이 그대로 작동
  • 단점: 화면이 바뀌면 BDC 스크립트도 같이 수정해야 함
  • 주로 FI 모듈에서 자주 사용 (BAPI 커버리지가 부족한 영역)

사용 예

  • 표준 BAPI가 없는 화면을 통한 데이터 등록
  • 레거시 데이터 일괄 마이그레이션
  • 사용자 시점 검증을 그대로 활용해야 하는 케이스

EXIT — 구식 확장 포인트

EXIT(User Exit / Customer Exit)는 BADI 이전 세대의 확장 메커니즘입니다.

특징

  • 함수 모듈 또는 INCLUDE 형태
  • 객체 지향이 아닌 절차적(procedural) 구조
  • BADI보다 위치·이름이 고정적이라 유연성 떨어짐
  • 신규 SAP 버전에서는 가능하면 BADI를 우선 사용하는 것이 권장됨

기존 시스템을 유지보수하다 보면 EXIT 구현을 마주칠 일이 종종 있어서 개념은 알아두는 것이 좋습니다.


한 눈에 보는 선택 가이드

상황 선택
SAP 표준 데이터(자재/PO/고객 등)를 외부에서 조작 BAPI
표준 트랜잭션 흐름에 검증·자동입력 로직 추가 BADI (또는 EXIT)
BAPI가 없는 화면을 자동화하거나 일괄 등록 BDC
레거시 시스템 유지보수 중 발견된 기존 확장 EXIT

요약

  • BAPI — SAP 표준 객체 다루는 펑션. 외부 연동·일괄 처리에 핵심
  • BADI — 표준 흐름에 커스텀 로직을 끼워 넣는 확장 포인트. 객체지향
  • BDC — 화면 자동화. Standard·CBO 모두 가능, FI에서 자주 사용
  • EXIT — BADI 이전 세대 확장. 구식이지만 레거시에 종종 있음

이 네 개 개념을 구분하기 시작하면 SAP ABAP 글을 볼 때 "왜 여기서 BAPI를 쓰지 않고 BDC를 썼지?", "이건 BADI 구현이구나" 같은 판단이 빠르게 됩니다.


Disclaimer — 이 포스트는 실무 정리 노트를 바탕으로 AI 보조로 정리되었습니다. SAP 시스템 버전과 회사 정책에 따라 추천 패턴이 다를 수 있으므로 적용 전 확인하시기 바랍니다.