BADIとは何ですか? SAP ABAP?

⚡ スマートサマリー

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

  • 🧩 コア定義: ビジネスアドインは、顧客出口のような拡張フックであり、標準機能にカスタム機能を追加します。 SAP 変更せずに。
  • 🧱 オブジェクト指向: BADIはインターフェースを定義し、その拡張機能は予約済みのインクルードではなく、それを実装するクラス内に存在します。
  • 🔁 複数の実装例: 顧客出口とは異なり、BADIは複数回実装できるため、業界ソリューションや各国版に適しています。
  • 🔓 Upgrade セーフ: BADIには SAP ソフトウェア変更登録は行われず、リリースアップグレードの影響を受けません。
  • 🛠️ 定義と実装: 定義とインターフェースはSE18で作成され、そのクラスによる実装はSE19で作成されます。
  • 🆕 クラシックとニュー: 従来のBADIは拡張機能に基づいていましたが、NetWeaverで導入された新しいカーネルBADIは、フィルタ、フォールバッククラス、およびパフォーマンスの向上といった機能を追加しています。

BADIとは何ですか? SAP ABAP

BADIとは何ですか?

BADIの略です B使い勝手 Add Ins。カスタマーイグジットと同様に、BADIはカスタム拡張機能をフックするのに役立ちます。 SAP 機能性。 BADI の例: トランザクションCAT2 – タイムシート入力では、人事部門は、故意に誤ったデータを提出することは解雇の理由となるという対話型の確認を組み込むことを希望しています。これは、BADIを使用して実現できます。

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。

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、カスタマーイグジット、ユーザーイグジットの比較

これら3つの技術はすべて標準を向上させます SAPしかし、技術と柔軟性において違いがあります。下の表では、BADIを2つの古いシステムと並べて示しています。 脱出テクニック.

基準 ユーザー出口 顧客退出 バディ
テクノロジー サブルーチン(FORM) 機能モジュール、画面、またはメニュー オブジェクト指向インターフェースとクラス
対象領域 SDモジュールのみ すべてのモジュール すべてのモジュール
実装数 1 1 複数、複数使用と定義される場合
維持管理 インクルードの直接編集 SMODとCMOD SE18とSE19
Upgrade 安全な SPAUに確認済み はい はい

実用的なルールとしては、BADIが存在する場合は常にBADIを使用するのが良いでしょう。なぜなら、BADIはオブジェクト指向であり、アップグレード時にも安全で、複数回実装できるからです。

よくあるご質問

SE18はBADIビルダーであり、定義とそのインターフェースを作成します。SE19は実装ビルダーであり、その定義に実装クラスを関連付けます。一方がフックを定義し、もう一方がそのフックに実装を施します。

複数使用BADIは、複数の実装を同時にアクティブにすることができ、メソッドが呼び出されるとそれらすべてが実行されます。単一使用BADIは、アクティブな実装を1つだけ許可します。

CL_EXITHANDLER=>GET_INSTANCEにブレークポイントを設定し、トランザクションを実行して、EXIT_NAMEパラメータからBADI名を読み取ります。新しいBADIについては、リポジトリ情報システムでプログラムの拡張スポットを検索してください。

はい。ABAP開発ツールのAIアシスタントは、要件の説明に基づいて、実装クラス、メソッド本体、フィルタロジックを作成します。開発者はSE19で実装を有効化し、テストを行います。

AI アドバイザーは標準プログラムを調査し、どの拡張オプションが存在するかを報告し、新しい作業のために拡張スポット内の新しい BADI を推奨します。ping そのオプションしか提供されない、典型的なBADI。