SAP 표준 프로그램 확장하기 - BADI · User Exit · Enhancement Spot

SAP 표준 프로그램 확장하기 배너

표준은 건드리지 않는다

SAP 표준(STD) 프로그램의 소스를 직접 고치면, 추후 업그레이드·노트 적용 시 충돌이 나고 표준 수정(Modification) 부담을 떠안게 됩니다. 그래서 SAP은 표준 소스를 건드리지 않고 로직을 끼워 넣는 확장 포인트를 제공합니다. 대표적으로 세 가지를 구분해 두면 상황에 맞게 고를 수 있습니다.

1. BADI - 가장 우선 고려

BADI(Business Add-In)는 객체지향 기반의 확장 포인트로, 보통 로직으로 제약을 걸거나 동작을 추가할 때 사용합니다.

  • 표준이 BADI를 제공한다면 BADI를 쓰는 것이 베스트입니다. 인터페이스 기반이라 관리가 깔끔하고 업그레이드에도 비교적 안전합니다.
  • BADI를 제공하지 않고 User Exit만 제공하는 표준이라면, 그때는 아래의 CMOD/User Exit를 사용합니다.

2. User Exit (CMOD) - 화면·필드 확장이 필요할 때

표준 화면에 SCREEN을 붙이거나 CBO(커스텀) 필드를 추가해야 하는 경우에는 CMOD에서 User Exit(특히 Screen Exit)를 사용해야 합니다. 이 영역은 BADI로는 처리할 수 없습니다.

실무에서 자주 쓰는 조합은 다음과 같습니다.

① Screen Exit (CMOD)

표준 화면에 커스텀 필드/서브스크린을 배치한다.

② BADI

그 화면의 필드를 로직으로 제어(활성/비활성, 값 검증 등)한다.

"화면 배치는 Screen Exit, 그 화면의 동작 제어는 BADI" 로 역할을 나눠 쓰는 패턴입니다.

3. Enhancement Spot - 표준 기능 실행 전후의 예외 처리

Enhancement Spot(Enhancement Framework)은 BAPI나 SAP이 표준으로 제공하는 기능/함수가 실행되는 지점에서, 예외 로직이나 추가 체크를 끼워 넣어야 할 때 사용합니다. 표준 함수 호출 전후에 우리만의 검증/보정 로직을 붙이는 식입니다.

어떤 것을 고를까

BADI로직 제약·동작 추가
(제공되면 1순위)
User Exit (CMOD)화면(Screen)·CBO 필드 추가
(BADI 불가 영역)
Enhancement Spot표준 기능/BAPI 실행 시
예외 로직 체크
INFO

확장 포인트의 제공 여부와 이름은 표준 트랜잭션·릴리스(S/4HANA 등)에 따라 다릅니다. 실제로 어떤 BADI/Exit가 어디서 호출되는지는 디버깅이나 SE18/SE19, Enhancement 분석으로 시스템에서 직접 확인하세요.

Disclaimer — 이 포스트는 AI(Claude)를 활용하여 작성된 초안을 바탕으로 검수 및 보완하여 작성되었습니다. 내용 중 오류나 오타가 있다면 댓글로 알려주시면 감사하겠습니다.