增強查找方法:轉發來自http://blog.sina.com.cn/s/blog_d10446f70101c1ev.html
1.User Exit,也就是用戶出口。著名的MV45AFZZ系列就是這種出口。一般項目上通過算個號直接修改這種簡單粗暴的方式來處理,SAP也會默認認為這個是增強性的修改而不是修改標准程序。對這類程序的修改也可以通過后面講到的Enhancement Implementation來實現,看上去要稍微專業一些。
2.SAP Enhancements,也就是SMOD,通過CMOD來實現。博主理解SMOD = SAP Modification, CMOD = Customer Modification。意思就是SMOD是SAP發布的一些Function Module,這些FM一般都在標准程序里面有調用,里面一般都會是一個PERFORM ZXXXX,你要做增強,其實就是創建這個Z開頭的程序,在里面寫一些代碼。FM能做的事以及輸入、輸出參數都是SAP預設置好的,也就是說你要干什么事就得找到什么樣的SMOD,然后創建CMOD去實現它。
3.Business Add-In,也就是BADI。BADI也需要通過Create Implementation來實現,跟SMOD/CMOD比較類似,功能更寬泛一些,多半是一些Method的組合,通過每個Method可以實現不同的功能。
4.Enhancement Implementation,這個是很靈活的一種增強,SAP在它的標准程序里面會預留一些Enhancement Spot,如果你需要在這個程序里面做一些修改,可以考慮通過在Enhancement Spot上面創建Enhancement Implementation來實現。
博主了解到的增強方式就這么幾種了,下面說說怎么來找到這些增強。
1.SPRO。這是找到增強最直接的方式。基本上每個大菜單下面都會有一個叫做System Modifications的菜單,在這個菜單里面你可以看到很多的子菜單,每個子菜單的Documentation里面(而不是直接點運行)就會寫有哪些增強可以使用,是什么類型的增強。比如著名的MV45AFZZ就在下面的路徑里面可以看到。
這里面除了告訴你有MV45AFZZ這個東西,還給你講解了每個FORM能做什么事情。實在是相當貼心。
另外一些BADI也可以通過這個方式來找到,比如給客戶主數據創建一些附加視圖:
2.通過PACKAGE查找。進入SE80,選擇Package,然后輸入VMOD,就可以看到SD模塊下面的一些用戶出口,都在Includes里面。MV45AFZZ也在其中(真是無處不在啊)。
3.通過程序查找。這個是個很簡單的辦法。只要在Sandbox或者IDES里面創建一個程序,就可以很方便的找到SMON/CMOD以及BADI類型的增強點了。程序博主會單獨放到另外一篇博文里面。
4.通過Table: MODSAP查找。這個方法不到萬不得已不推薦使用,因為這里面的東西實在是很多,並且缺乏描述。這里找到的都是SMOD/CMOD方式的增強,可以通過檢索"SD*"來查找SD相關的增強。
5.查找BADI。這個方法基本上可以找到一個T-CODE下面所有的BADI,比用第三種方式的程序找的要全。當然過程也會稍微復雜一些。首先進入SE24,查看Object Type:CL_EXITHANDLER。
在GET_INSTANCE這個Method里面設置如下斷點:
然后進入你要進的T-CODE(如果需要在這個T-CODE后續動作中查找,建議先進入T-CODE,在操作開始前再設置斷點),Debug窗口會自動彈出,通過查看EXIT_NAME的值,就可以找到這段程序所調用的每一個BADI。
6.直接DEBUG/找程序源代碼。這種方式適用於查找CMOD/SMOD類型的增強,以及Enhancement Implementation方式的增強。
先說CMOD/SMOD:在程序里面查詢"Customer-Function",如果有的話,那就是一個SMOD/CMOD的增強。通過雙擊編號(本例里面是002)就可以進到對應的SMOD的FM。
回頭到MODSAP這個表里面就可以找到對應的SMOD名稱
找Enhancement Implementation就更簡單了,在你想做增強的標准程序里面點擊下圖所示的按鈕
然后找到如下菜單路徑:
如果上述操作完成后,在程序里面出現了黑色的箭頭以及對應的虛線行,就可以在這里做Enhancement Implementation了,隨心所欲,想怎么搞就怎么搞,而且是SAP支持的方式,升級什么的不受影響哦!
嗯,基本上增強就這些了,希望大家增的開心,強的愉快
