BADI란 무엇인가요? SAP 아밥?

⚡ 스마트 요약

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

  • 🧩 핵심 정의: 비즈니스 추가 기능은 고객 종료 루틴과 유사한 확장 후크로, 표준 기능에 사용자 지정 기능을 추가합니다. SAP 수정하지 않고.
  • 🧱 객체 지향: BADI는 인터페이스를 정의하며, 기능 향상은 예약된 include 문이 아니라 해당 인터페이스를 구현하는 클래스에 존재합니다.
  • 🔁 다양한 구현 방식: 고객 출구와 달리 BADI는 여러 번 구현할 수 있으므로 산업 솔루션 및 국가별 버전에 적합합니다.
  • 🔓 Upgrade 안전 : BADI는 아무것도 필요로 하지 않습니다. SAP 소프트웨어 변경 등록은 릴리스 업그레이드의 영향을 받지 않습니다.
  • 🛠️ 정의 및 구현: 정의와 인터페이스는 SE18에서 생성되고, 구현체와 해당 클래스는 SE19에서 생성됩니다.
  • 🆕 클래식과 뉴: 기존 BADI는 향상 기반 방식이었지만, NetWeaver에 도입된 새로운 커널 BADI는 필터, 대체 클래스 및 향상된 성능을 추가했습니다.

BADI란 무엇인가요? SAP ABAP

BADI란 무엇인가요?

BADI의 약자 B유용성 Add Ins. 고객 종료(Customer Exits)와 마찬가지로 BADI는 사용자 정의 확장 기능을 연결하는 데 도움이 됩니다. SAP 기능. BADI의 예: 트랜잭션 CAT2 – 타임시트 입력에서 HR은 의도적으로 잘못된 데이터를 제출하는 것은 해고 사유라는 대화형 확인을 포함하려고 합니다. 이는 BADI를 사용하여 달성할 수 있습니다.

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.

BADI 정의 및 구현

단계 2) BADI 구현 생성: 트랜잭션 SE19

BADI 정의 및 구현

단계 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는 객체 지향적이고, 업그레이드에 안전하며, 여러 번 구현할 수 있기 때문입니다.

자주 묻는 질문

SE18은 BADI 정의 및 인터페이스를 생성하는 BADI 빌더입니다. SE19는 해당 정의에 구현 클래스를 연결하는 구현 빌더입니다. 하나는 후크를 정의하고, 다른 하나는 그 후크를 채우는 역할을 합니다.

다중 사용 BADI는 동시에 둘 이상의 활성 구현을 허용하며, 메서드가 호출될 때 모든 구현이 실행됩니다. 단일 사용 BADI는 하나의 활성 구현만 허용합니다.

CL_EXITHANDLER=>GET_INSTANCE에 중단점을 설정하고 트랜잭션을 실행한 다음 EXIT_NAME 매개변수에서 BADI 이름을 읽으십시오. 새로운 BADI의 경우 저장소 정보 시스템에서 프로그램의 확장 지점을 검색하십시오.

예. ABAP 개발 도구의 AI 어시스턴트는 요구사항 설명을 바탕으로 구현 클래스, 메서드 본문 및 필터 로직을 작성합니다. 개발자는 SE19에서 구현을 활성화하고 테스트합니다.

AI 자문가는 표준 프로그램을 검토하여 개선 옵션을 보고한 다음, 새로운 작업을 위해 개선 위치에 새로운 BADI를 권장합니다.ping 기존 BADI 방식에서는 해당 옵션만 제공됩니다.

이 게시물을 요약하면 다음과 같습니다.