Friday is awesome

SAPについて個人的なメモをまとめたブログです

MENU

【SAP Tips】SAP BADIについてのメモ

 

SAP BADIとは?
似たような言葉にBAPIがありますが、こちらはBusiness Application Interfaceの略でBADIとは異なる意味です。BAPIはSAP社が提供しているデータの登録、更新、取得をするためのAPIです。SAPは受注伝票登録や出荷伝票登録など様々なBAPIを提供しています。別システムからデータを渡してこれらのBAPIをコールすることもできますし、アドオンプログラムにBAPIを組み込んで実装することもできます。
話がそれましたが、BADIです。BADI。
BADIとは、SAPの用語でBusiness Add Inの略語です。SAPの標準機能と言われる機能に対して追加機能を実装する仕組みとなります。それではExitも標準機能に対する追加機能ではないかと思われるかもしれませんが、その通りなのです。
どちらも標準機能に対する追加実装するための仕組みですね。ちなみに、あまりテクニカルなところに詳しくないクライアントに説明する時にはBADIという言葉を使わないでBADIのことをExitと言ったほうが伝わりやすい場面も度々あります。そういう意味で、BADI/Exitという用語を細かく使い分けていないProjectもあるのではないでしょうか。

出荷のBADIを例に見ていきましょう。LE_SHP_DELIVERY_PROCという出荷BADIがあり、
これはSE18のBADI BuilderでEnhancement Sport項目に入力してDisplayボタンを押すと確認できます。Descriptionは、「Enhancements in delivery processing」とありますね。
また、「LE_SHP_DELIVERY_PROC」は、あくまでもBADIの定義で、出荷プロセスで使用されるMethodは実際にはBADI Interfaceに紐付けられています。
IF_EX_LE_SHP_DELIVERY_PROCがInterface名になります。
Technical Detailsタブから確認できます。
Interfaceをダブルクリックすると、Methodがズラッと表示されます。
Method例
 Check_item_deletion
 Delivery_final_check
 Save_document_prepare
各Methodの説明はInterface documentationに簡単な説明書きがあります。
また、Methodで使用できるParameterはParametersボタンを押すと確認できます。業務要件に合わせてどのMethodが適切かを調査する必要があります。

そして、このBADIのMethodにロジックを実装するためにSE19でBADI Implementationを作成します。BADIを使う利点の一つに、一つのBADI Definitionに対して複数のBADI Implementationを実装することができます。つまり、LE_SHP_DELIVERY_PROCのBADI Definitionに複数のImplementationを作れます。

BADIを理解するには、Class/Methodというオブジェクト指向プログラミングの概念を理解する必要がありますね。元々、SAPにはUser Exitという標準に対するアドオン拡張の機能があったが(現在でも使われている)、そこにABAPの世界にもオブジェクト指向の考え方が入ってきて、現在のBADIという仕組みが実装されるようになった。
今日は表面的なところだけで、ここらへんまで。
もっと勉強してうまくまとめられるようにしたい!