SAP使用者出口(exit)問題--資料來源增強

mmccking發表於2010-12-13

SAP使用者出口(exit)問題

資料來源增強

[@more@]sap的使用者出口總共有三代:
第一代
sap提供一個空程式碼的子過程,在這個子過程中使用者可以新增自己的程式碼,控制自己的需求。這類增強都需要修改sap的標準程式碼。
示例:USEREXIT.. in SAPMV45A
對於第一代增強,可以用以下方法查詢增強:開啟欲增強的程式,點選工具欄上的“Display Object List”按鈕,選擇Subroutines,查詢以“UserExit”開頭的子程式,根據子程式前面的註釋文件來查詢使用者出口

第二代
sap提供的是CUSTOMER-FUNCTION,它是透過SMOD和CMOD完成實現。
對於第二代增強,可以用以下方法查詢增強使用者增強通常包括下面3類,顧名思義,就是增強SAP的可能沒有提供的功能(透過後臺配置也不能實現).
1.E Enhancement exits :就是常說User_exit (使用者出口)
使用SE37搜尋EXIT*的函式大都是做exit用的,通常裡面預包含了一個Z開頭
的程式. SE16查詢TFDIR(函式表)輸入EXIT*也可.
2.C GUI codes( GUI介面增強)
3. S Subscreens (螢幕增強)
Enhancement在表MODSAP可看到,而TFDIR欄位 MAND(值為C表示此出口函式被啟用).使用SMOD(CMOD)當然可啟用exit function,有時候一時難以查詢到相關Enhancement時可使用下面程式將出口函式啟用.

REPORT Zactexitfun .
data ztfdir like tfdir .
* select single * from tfdir into ztfdir
* where FUNCNAME =
* 'EXIT_SAPMM06E_013'.
* ztfdir-MAND = 'C' .
* update tfdir from ztfdir.
* 將EXIT_SAPMM06E_013換成實際所需exit函式名
update tfdir set MAND = 'C'.
where FUNcname = 'EXIT_SAPMM06E_013'.

***當然也可SE16:MODSAP表enhancement輸入EXIT_SAPMM06E_013然後得到enhancement name MM06E005後使用SMOD測試啟用exit函式.
增強相關函式和表格
Function:
[1].DYNP_VALUES_READ
[2]. MODX_ALL_ACTIVE_MENUENTRIES(選單增強)
[3].MODX_FUNCTION_ACTIVE_CHECK(出口函式增強)
由於讀者可能接觸user exit最多,除了附錄光碟有個查詢ZFINDEXIT的程式外(有些exit使用它並不能找到),另一個直接有效的方法就是使用這個函式,SE37設好斷點後執行tcode如其有exit就會呼叫此函式.
[4].MODX_MENUENTRY_ACTIVE_CHECK(選單增強)
[5].MODX_SUBSCREEN_ACTIVE_CHECK(螢幕增強)
Table:
[1]. TFDIR->function module table
[2]. MODSAP->sap enhancement table
[3]. TSDIR->Dynpro Areas CALL CUSTOMER SUBSCREEN(螢幕增強)
[4]. CUATEXTS-> GUI Interface: Menu Texts Changed(GUI 選單文字增強)

***注意,為了確保一個出口被真正應用,必須同時啟用相關程式(SE38)和出口函式(SMOD|CMOD,反正就是要保證tfdir-mandt=’C’,用程式也可.)

第三代
sap提供的第三代的使用者出口就是BADI,他的呼叫方式是CALL METHOD (instance),(相關的TCODE是SE18和SE19),可以透過EXIT_HANDLER這個單詞查詢BADI。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8356764/viewspace-1043037/,如需轉載,請註明出處,否則將追究法律責任。

相關文章