找增強方法總結
***方法一****************************************
通過SE30,運行TCODE後,點Evaluate後,查看已耗用時間分析評估:命中清單。
找以“exit”開頭的SAP程式,如:EXIT_SAPLIE01_007,
這個FUNCTION就是TCODE提供的一個出口。
至於如何查看這個增強是屬於哪個SMOD,能夠查閱
MODSAP這個表(SAP Enhancements).
***方法二****************************************
通過SE37中的:MODX_FUNCTION_ACTIVE_CHECK
函數來找,
在函數的最後一行打個斷點,再運行TCODE的,如果有增強則會跳入DEBUG介面,在DEBUG介面中,查看L_FUNCNAME欄位對應的值,此值就是就是要找的出口,
再去SE11中通過MODSAP來查看出口對就的是那個SMOD,
接下來就可以在CMOD中建立增強組了,把找到的增強填入,
最後根據實際的業務進行處理。
以上的兩種方法是用來找第二代增強。
***方法三****************************************
找BADI的方法。
先運行SE24,查看類對象CL_EXITHANDLER,
在其方法:GET_INSTANCE的14行(
CALL METHOD CL_EXITHANDLER=>GET_CLASS_NAME_BY_INTERFACE)打上一個斷點。
接下來運行事務代碼,當有BADI是將會被執行,這時在DEBUG模式下,會進入類CL_EXITHANDLER
的GET_INSTANCE
方法,按F6執行這個方法之後,點參數EXIT_NAME查看其對應的值,所有的方法實現都在此類對象中,此時就是我們所要找的BADI。
實現BADI的方法
進入SE19,選擇Create
Implementation中的Classic BADi
另一種方法(跟上面的差不多)
尋找來源程式,在程式中尋找程式碼片段 CL_EXITHANDLER => GET_INSTANCE
就可以找到該程式所用到的BADI。
***方法四****************************************
通過開發類找出口
以ME21N事務代碼為例,進入TCODE後,選擇點系統
-》狀態 -》程式名稱,雙擊後進入到程式中,再點功能表列中的轉到
-》屬性,找到開發類的名稱,比如ME21N的開發類是‘ME’。
如果是打出口,則到SMOD事務代碼中,點加強邊的按紐,在開發類中輸入‘ME’,斷行符號後就會顯示出所有的出口。
找BADI也是同樣的過程,只是到SE18中去確定BADI
不過此方法找出來的出口,不是針對某個程式的出口,而是把開發類所對應的出口全找出口,所以
還要通過自己的判斷找到所需求的出口
*******************************************
增強相關函數和表格
Function:
[1].DYNP_VALUES_READ
[2]. MODX_ALL_ACTIVE_MENUENTRIES(菜單增強)
[3].MODX_FUNCTION_ACTIVE_CHECK(出口函數增強)
[4].MODX_MENUENTRY_ACTIVE_CHECK(菜單增強)
[5].MODX_SUBSCREEN_ACTIVE_CHECK(螢幕增強)