BADI(ビジネスアドイン)の探し方

  BADI/User-Exit

概要

元々、SAPはユーザEXITと呼ばれるインクルードプログラムを実装することによって標準機能の拡張を実現してきたが、それに置き換わる新拡張技術としてBADI(ビジネスアドイン)を提供している。これにより、今後新たなユーザEXITを提供する事はないと言われている。
また、BADIはクラス化されている為に予め定義された引数・戻り値しか使用する事ができず苦労する事も多い。

BADIの探し方

1.トランザクションコード:SE24でクラス:CL_EXITHANDLERを照会
2.メソッド:GET_INSTANCEを選択しプログラムソースを表示
3.下記にブレイクポイント指定
14行目当たりの”CALL METHOD CL_EXITHANDLER=>GET_CLASS_NAME_BY_INTERFACE”
4.確認したいトランザクションを別セッションで実行

4.上記メソッドの戻り値:EXIT_NAMEに返される値が使用されているBADIの定義名にあたる。
※共通的なBADIも実行されるので、関係のなさそうな名称であればスルーしてください。

品目マスタの変更(トランザクションコード:MM02)で表示→保存と実行した場合は以下のBADIが実行されている事がわかる。
BADI_MATERIAL_OD
GOS_SRV_SELECT
BADI_LAYER
BADI_MATERIAL_OD
ECM_EXIT
BADI_GTIN_VARIANT
BADI_MATERIAL_CHECK
BADI_SCREEN_LOGIC_RT
W_RETAILSYSTEM_IDENT
BADI_MATN1

これらで品目に関係がありそうなのはBADI_MATERIAL_OD、BADI_MATERIAL_CHECK、BADI_MATN1だろうと推測できる為、
その中で要件が実現可能なメソッドが存在するかを確認していけば良い。
またBADIの定義はトランザクションコード:SE18で確認する事ができ、BADIの実装を行いたい場合は
トランザクションコード:SE19にてBADIの定義を継承して拡張登録する事ができる。
また、実装後の変更でクラス名が判っていればトランザクションコード:SE24から直接変更する事も可能だ。

関連トランザクションコードまとめ

SE24: クラス/インタフェース
SE18: ビジネスアドイン(定義)
SE19: ビジネスアドイン(実装)