BADI(Business ADD In)란 OOP 기반의 Enhancement다.
Customer Exit이 Function module 기반의 Enhancement라면 BADI는 class를 이용한 Enhancement인 셈이다.
OOP와 Function 모두 모듈화를 위한 프로그래밍 방법이지만 Function은 재사용이 불가능(상황에 따라) 한 반면 OOP는 상속, 인터페이스 등 여러가지 방법을 통해 재사용이 가능하다는 점이다.
즉, 이번에 해볼 BADI 는 재사용이 가능하다는 것이다.
Enhancement에서 재사용이 가능하다는 의미는 다음과 같다.
Customer Exit은 Function으로 구동된다. 즉 재사용이 불가능하다.
따라서 Function Exit이 A프로젝트에 할당되어 있다면 A프로젝트가 비활성화 되지 않는 한 B프로젝트에 재사용이 불가능하다는 것이다.


하지만 OOP 기반의 BADI는 이런 단점을 극복할 수 있다.
그렇다면 BADI 는 어떻게 구현할 수 있을까?
Customer Exit과 같은 흐름으로 진행하면 된다.
Customer Exit은 SAP가 스탠다드 로직 내에 지정해놓은 Exit 포인트(ex. Call customer function 'xxx')를 찾아야 하는 것 처럼, BADI도 sap가 열어놓은 Exit 포인트를 찾아야 한다.
찾는 방법은 아래와 같다.
BADI 역시 Exit을 찾는 3가지 방법이 존재한다.
1. CL_EXITHANDLER 디버깅

SE24에서 CL_EXITHANDLER를 조회한다.

GET_INSTANCE 메소드에 디버깅을 걸고 스탠다드 티코드를 수행하면
해당 스탠다드 티코드에서 Exit 포인트에서 디버깅이 걸린다.

이 때 exit_name 변수를 확인하여 Exit(badi) 명을 확인할 수 있다.
2. SE18에서 PACKAGE 조회

스탠다드 티코드의 프로그램 패키지 명을 확인한 뒤

패키지 명을 기준으로 badi 리스트를 확인할 수 있다.
3. SE84에서 오브젝트 조회

SE84에서 패키지 명을 기준으로 BADI 리스트를 조회할 수 있다.
* 틀린 내용은 댓글로 지적해주시면 감사히 받겠습니다 :)

'SAP > Enhancement' 카테고리의 다른 글
[ABAP] 번외. SAP MM01 EXIT (0) | 2024.11.16 |
---|---|
[ABAP] 11. SAP Classic BADI -2 (0) | 2024.11.06 |
[ABAP] 08. SAP Customer Exit: 정리 (0) | 2024.11.05 |
[ABAP] 07. SAP Customer Exit: Screen Exit (0) | 2024.11.05 |
[ABAP] 06. SAP Customer Exit: Menu Exit (0) | 2024.11.04 |