SAP 增强篇 Method1 BADI增强的查找方法
查找BADI的方法:
(1)通過SE24,輸入CL_EXITHANDLER,然后在方法GET_INSTANCE中設置斷點,然后運行事務代碼判斷 exit_name的值,
操作過程如下:
輸入se24,然后輸入cl_exithandler
找到 GET_INSTANCE 方法,雙擊get_instance設置斷點查看exit_name的值:
示例: 我們要找PO保存的增強,可以用哪個BADI ?
前臺輸入 ME21N,進入斷點, EXIT_NAME = ME_GUI_PO_CUST
F8 , EXIT_NAME =GOS_SRV_SELECT
F8 , EXIT_NAME = BADI_LAYER
F8 下一步,EXIT_NAME = ME_TAX_FROM_ADDRESS,沒往下走一步都有響應的BADI
還是直接測試到 保存的時候,填好數據,點擊保存;
在類CL_EXITHANDLER的斷點里沒有停下,原因是:我剛才為了走完,直接到保存的時候再看 EXIT_NAME ,把斷點刪除了;
OK 再試一次,這回記得在保存之前的一步,再設置斷點:
進入斷點了;這次EXIT_NAME = ME_INFOREC_SEND
我再點擊了3次F8 ,得到預期結果:EXIT_NAME = ME_PURCHDOC_POSTED
以前我也沒怎么這么正經的取跟BADI ,都是網上找找或者找前輩請教,現在看來,這里面是有很多學問的
再下一步是這個
然后運行完:
再用方式
(2) 通過st05跟蹤 找BADI,
badi對應的數據表為 SXS_INTER, SXC_EXIT, SXC_CLASS 和 SXC_ATTR,
而這些表都是通過視圖 V_EXT_IMP 和 V_EXT_ACT 來查詢的。
1、打開運行事務碼: ST05 選擇“table buffer trace”而不是常用的"SQL trace"
2、activate trace(開始跟蹤)
3、運行事務碼:me21n
4、創建一個采購訂單,保存
5、deactivate trace(結束跟蹤)
6、點擊display trace,在出來的選擇條件中: objects中輸入:V_EXT_IMP和V_EXT_ACT;在 operations中輸入“OPEN”
7、查詢
通過查詢的結果可以看出,視圖V_EXT_IMP的BADI的接口類名字都是以IF_EX_開頭的,其中IF_EX_之后的就是對應BADI接口的定義。
PO經常用到的BADI: ME_PROCESS_PO_CUST ;ME_PURCHDOC_POSTED
因為 ME_PROCESS_PO 僅能在 SAP 內部實施,如果要使用,要做相應的隱式增強(這個有機會可以研究)
還遇到這個例子,也是僅能內部實施,而且沒有 _CUST
這個BADI 勾上僅可SAP內部使用了,我想用這個 有辦法嗎
這種BADI 直接使用不了,要去查看他有沒有實施類,在實施類里做隱式增強
注意:sap的實現類你是不能跳過的,你要看下sap的實施類有沒有被調用。然后在增強
總結
以上是生活随笔為你收集整理的SAP 增强篇 Method1 BADI增强的查找方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决VirtualBox里Ubuntu的
- 下一篇: 微信运动封号规则