BADI란 무엇인가요? SAP 아밥?
⚡ 스마트 요약
바디 인 SAP ABAP는 Business Add-In의 약자로, 표준 기능에 사용자 정의 로직을 연결하는 객체 지향 확장 기능입니다. SAP 이 페이지에서는 BADI의 기능, 특징, 기존 및 새로운 유형, SE18 및 SE19 워크플로, 그리고 Exit와의 비교에 대해 설명합니다.

BADI란 무엇인가요?
BADI의 약자 B유용성 Add Ins. 고객 종료(Customer Exits)와 마찬가지로 BADI는 사용자 정의 확장 기능을 연결하는 데 도움이 됩니다. SAP 기능. BADI의 예: 트랜잭션 CAT2 – 타임시트 입력에서 HR은 의도적으로 잘못된 데이터를 제출하는 것은 해고 사유라는 대화형 확인을 포함하려고 합니다. 이는 BADI를 사용하여 달성할 수 있습니다.
기존 종료 방식과의 차이점은 기술적인 부분에 있습니다. BADI는 ABAP 객체를 기반으로 구축되므로 표준 프로그램은 인터페이스 메서드를 호출하고, 사용자 정의 코드는 해당 메서드를 구현하는 클래스에 존재합니다. 이러한 이유로 BADI는 종종 객체 지향적인 기존 종료 방식의 후계자로 불립니다. 고객 출구.
기능
- BADI는 객체 지향적입니다.
- 여러 번 구현할 수 있습니다.
- 그것은 필요하지 않습니다 SAP 소프트웨어 등록 변경
- BADI의 기능에 대한 릴리스 업그레이드에 영향이 없습니다.
이 네 가지 특징이 그 이유를 설명합니다. SAP 기존의 종료 방식 대신 BADI를 사용하는 것을 권장합니다. BADI를 사용하면 개선 사항이 별도의 클래스에 존재하므로 업그레이드 시에도 변경되지 않고 유지되며, BADI는 여러 팀에서 사용할 수 있도록 정의할 수 있어 여러 팀이 동일한 지점을 개선하더라도 서로 덮어쓰지 않고 작업할 수 있습니다.
BADI의 종류
SAP 두 가지 세대의 비즈니스 추가 기능(BADI)을 제공합니다. 기존 BADI는 위에서 설명한 확장 기반 버전이며, 새롭게 도입된 BADI는 다음과 같습니다. SAP NetWeaver는 향상 프레임워크의 일부이며 더 빠르고 유연합니다.
| 기준 | 클래식 바디 | 새로운 (커널) BADI |
|---|---|---|
| 유지 관리됨 | SE18과 SE19 | 향상 영역 내의 향상 빌더 |
| 필터 | 간단한 필터 값 | 논리 표현식을 사용한 필터 조합 |
| 폴백 | 사용할 수 없음 | 활성화된 구현체가 없을 경우 기본 대체 클래스가 실행됩니다. |
| 인스턴스화 | CL_EXITHANDLER=>GET_INSTANCE | GET BADI 및 CALL BADI 문 |
| 성능 | 속도가 느리고, 호출할 때마다 객체가 생성됩니다. | 더 빠르고, 커널에 의해 관리됩니다. |
두 세대 모두 유사한 방식으로 발견되고 구현되며, 그 방법은 다음과 같습니다.
BADI를 정의하고 구현하는 방법
여기에는 세 단계가 포함되었습니다.
단계 1) BADI 정의 및 인터페이스 생성: 트랜잭션 SE18.
단계 2) BADI 구현 생성: 트랜잭션 SE19
단계 3) 인터페이스를 구현하는 클래스를 정의합니다. 구현 생성 과정에서, 개선 사항의 인터페이스를 구현하는 클래스도 함께 생성됩니다.
코드에서 표준 프로그램은 종료 핸들러를 통해 구현부에 도달합니다. 고전적인 패턴은 BADI 참조를 인스턴스화한 다음 인터페이스 메서드를 호출합니다.
* Reference typed with the BADI interface DATA: lo_badi TYPE REF TO zif_ex_badi_demo. * Get the active implementation(s) CALL METHOD cl_exithandler=>get_instance CHANGING instance = lo_badi. * Call the interface method that carries the custom logic CALL METHOD lo_badi->check_data EXPORTING is_input = ls_input.
💡 팁: 새로운 커널 BADI는 GET BADI 및 CALL BADI를 사용하여 더 간단하게 호출할 수 있으며, 이러한 함수는 필터 값을 자동으로 처리합니다. 호출을 작성하기 전에 SE18을 사용하여 확장 지점이 기존 BADI인지 새로운 BADI인지 확인하십시오.
⚠️ 경고: 트랜잭션 SE18에는 정의와 인터페이스가 있고, SE19에는 구현이 있습니다. SE18에서 구현을 생성하거나 SE19에서 정의를 생성하는 것은 흔히 발생하는 실수로, 이로 인해 BADI가 비활성화됩니다.
BADI vs 고객 종료 vs 사용자 종료
세 가지 기술 모두 표준을 향상시킵니다. SAP하지만 기술력과 유연성 면에서 차이가 있습니다. 아래 표는 BADI를 기존의 두 제품과 비교하여 보여줍니다. 종료 기법.
| 기준 | 사용자 종료 | 고객 출구 | 바디 |
|---|---|---|---|
| 기술 | 서브루틴(폼) | 기능 모듈, 화면 또는 메뉴 | 객체 지향 인터페이스 및 클래스 |
| 범위 | SD 모듈 전용 | 모든 모듈 | 모든 모듈 |
| 구현 횟수 | 한 | 한 | 다중 사용으로 정의될 때, 다중은 여러 번 사용하는 것을 의미합니다. |
| 유지 관리됨 | 포함 항목의 직접 편집 | SMOD와 CMOD | SE18과 SE19 |
| Upgrade 가장 안전한 따뜻함 | SPAU에 확인했습니다. | 가능 | 가능 |
실질적인 규칙은 BADI가 존재할 경우 BADI를 사용하는 것입니다. 왜냐하면 BADI는 객체 지향적이고, 업그레이드에 안전하며, 여러 번 구현할 수 있기 때문입니다.



