BADIとは何ですか? SAP ABAP?
⚡ スマートサマリー
BADI で SAP ABAPはBusiness Add-Inの略で、標準機能にカスタムロジックを組み込むオブジェクト指向の拡張機能です。 SAP 機能。このページでは、BADIとは何か、その機能、従来型と新型のタイプ、SE18とSE19のワークフロー、および出口との比較について説明します。

BADIとは何ですか?
BADIの略です B使い勝手 Add Ins。カスタマーイグジットと同様に、BADIはカスタム拡張機能をフックするのに役立ちます。 SAP 機能性。 BADI の例: トランザクションCAT2 – タイムシート入力では、人事部門は、故意に誤ったデータを提出することは解雇の理由となるという対話型の確認を組み込むことを希望しています。これは、BADIを使用して実現できます。
従来の出口との違いは技術的なものです。BADIはABAPオブジェクトに基づいて構築されているため、標準プログラムはインターフェースメソッドを呼び出し、カスタムコードはそのメソッドを実装するクラスに存在します。これが、BADIがオブジェクト指向の出口の後継としてよく説明される理由です。 顧客退出.
特長
- BADI はオブジェクト指向です
- 複数回実装できる
- 必要ありません SAP ソフトウェア 変更登録
- BADIの機能にアップグレードされたリリースには影響はありません
これらの4つの特徴がその理由を説明しています SAP 従来の出口ルーチンよりもBADIの使用を推奨します。拡張機能は別のクラスに存在するため、アップグレード後も変更されずに残ります。また、BADIは複数回使用できるように定義できるため、複数のチームが互いに上書きすることなく同じ箇所を拡張できます。
BADIの種類
SAP は 2 世代のビジネス アドインを提供します。従来の BADI は、上記で説明した拡張ベースのバージョンであり、新しい BADI は、 SAP NetWeaverは拡張フレームワークの一部であり、より高速で柔軟性に優れています。
| 基準 | クラシックBADI | 新しい(カーネル)BADI |
|---|---|---|
| 維持 | SE18とSE19 | 拡張機能スポット内の拡張機能ビルダー |
| フィルタ | 単純なフィルタ値 | 論理式によるフィルターの組み合わせ |
| 後退する | 無し | 実装がアクティブでない場合、デフォルトのフォールバッククラスが実行されます。 |
| インスタンス化 | CL_EXITHANDLER=>GET_INSTANCE | GET BADI および CALL BADI ステートメント |
| パフォーマンス | 遅い、オブジェクトは呼び出しごとに作成される | カーネルによって管理され、より高速に |
両世代とも、同様の方法で発見され、実装される。その方法は次に示すとおりである。
BADIの定義と実装方法
これには XNUMX つのステップが必要でした
ステップ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、カスタマーイグジット、ユーザーイグジットの比較
これら3つの技術はすべて標準を向上させます SAPしかし、技術と柔軟性において違いがあります。下の表では、BADIを2つの古いシステムと並べて示しています。 脱出テクニック.
| 基準 | ユーザー出口 | 顧客退出 | バディ |
|---|---|---|---|
| テクノロジー | サブルーチン(FORM) | 機能モジュール、画面、またはメニュー | オブジェクト指向インターフェースとクラス |
| 対象領域 | SDモジュールのみ | すべてのモジュール | すべてのモジュール |
| 実装数 | 1 | 1 | 複数、複数使用と定義される場合 |
| 維持管理 | インクルードの直接編集 | SMODとCMOD | SE18とSE19 |
| Upgrade 安全な | SPAUに確認済み | はい | はい |
実用的なルールとしては、BADIが存在する場合は常にBADIを使用するのが良いでしょう。なぜなら、BADIはオブジェクト指向であり、アップグレード時にも安全で、複数回実装できるからです。



