Enhancement(6)--BAdIs {轉自}

 BAdIs(Business Add-Ins)是SAP在R/3 release 4.6A後增加的增強技術。總的來說,BAdIs克服了之前出口的所有缺點,並且還是用最新的OO技術實現,可謂是萬千寵愛於一身。不過在項目中,用BAdIs的顧問還是比較少,多數是用Customer Exit和User Exit完成。

    T-code se18 BAdI Definition
    T-code se19 BAdI Implement
    BAdIs可以實現,Program/Menu/Screen Exit,同時還有BTEs的重複使用的特性。但是不管如何,它在標準程序中的實現有一定格式:
 
    這個圖可以有助於我們理解BAdI的實現方式。同時,它也給我提供了一個尋找事務BAdI的一個途徑。在事務執行時,如果事務中存在BAdI,類cl_exithandler=>get_instance方法就會執行。所以大家就可以,用se24->cl_exithandler->雙擊GET_INSTANCE進入方法-> 在如下語句上設置斷點 CALL METHOD cl_exithandler=>get_class_name_by_interface->運行相應的事務,比如MIGO,MM02等,程序就會停在斷點處,這樣就可以查到相關事務的BAdI了。
    其實,BAdI就是綜合了SAP之前一些增強技術的之長,在標準程序預留了出口,通過面向對象的接口技術,使增強更加靈活。一個出口,可以有多個實現,但是一個client的話,只有一個是起作用的,我試下來,是按創建的先後順序及是否active來判斷的,不過一般一個實現就夠了,所以也不必那麼麻煩,只能說SAP的技術架構確實是比較先進。
下面來舉個例子說明一下:
se19->MB_MIGO_BADI->創建一個實現->Interface->PBO_DETAIL 鍵入如下代碼
  E_CPROG = 'ZKEVIN_MIGO'.
  E_DYNNR = '1111'.
  E_HEADING = 'kevin sub'.
    'ZKEIVN_MIGO'是一個自建的程序,'1111'是這個程序中自建的屏幕,'kevin sub'是Tab的標籤。
    你可以在自建的程序中增加PBO和PAI程序,同時在自定義屏幕中添加自己的屏幕元素及邏輯流。在BAdIs中的POST_DOCUMENT方法,可以在生成標準數據時,也在自己的Z表中插入數據,功能很強大。
    做出來效果是這樣的,T-code MIGO
 
    BAdI在實現時,還有可能要做一些congfigure,不同的出口方式可能不同,不過SAP會有相應的文檔,到時候多看看就行了,萬變不離其宗,只要搞明白BAdI的實現機制,那麼一切都不是難事。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章