SAP BTE業務交易事件總結(我的)
對於SAP增強的總結
SAP增強類似於其他語言的事件(如其他程式的EVENT),由系統定義好一些空的介面,我們可以使用這些介面進行配置,使其呼叫自定義函式,實現標準系統功能外的增強功能。
那麼系統標準程式的執行時,就會自動呼叫到的某些介面,然後觸發自定義函式的運作,實現中間功能,而不需要更改系統標準程式。
好處是介面可以傳輸當前程式相關的引數和資料記憶體表,方便我們應對程式目前狀態進行功能擴充套件,在自定義程式中我們可以引用介面傳輸過來的資料進行開發(對於每個事件介面,都可以在找到對應的空函式,記錄了介面傳遞的引數,我們可以直接copy使用),略有不足的是相關介面的查詢比較費功夫,另外自定義開發函式可能會存在效率問題,而且如果介面沒有傳遞我們需要的引數,增強就沒法通過事件介面來做。但是總體上來講,增強介面的存在基本上滿足了所有的,原基礎上功能增加的需求,是SAP亮點,目前國內ERP軟體如金蝶用友在05年才開始向這種體系架構靠攏,但是做得遠遠不如SAP成熟,原因是SAP從架構搭建時就使用了這種體系,而國內中低端ERP軟體的架構搭建時是沒有考慮的,但是用友金蝶的高端系統基本上使用了這種體系,如U9、NC、EAS。
SAP增強我們普遍使用的是CMOD、SMOD、FIBF這幾個事務碼來做。增強出口的查詢是個比較麻煩的事,有一下幾種方法:
1、 輸入事務碼SPRO,點選SAP參考IMG按鈕,在出來的結構樹中查詢相關增強,或者直接查詢“增強”搜尋所有增強,然後點選前面的圖檔圖示show出說明,得到相關的增強出口,點執行圖示就會自動呼叫cmod建立專案,後續就可以進行出口的增強自定義函式操作。如下:
找到出口
幫助找對應增強出口號
Cmod建立專案
找到元件出口函式
自定義函式
2、 使用SAP釋出的出口查詢程式,輸入對應事務碼,找到其呼叫到的出口,再使用cmod建立專案,然後對其進行分析,除錯,得到對應介面,必須要有需要的輸入引數才有用。如:
該程式由SAP釋出的增強出口查詢程式碼生成
執行後的樣子,輸入檢測的事務碼
使用到的介面
進入cmod,建立專案
點選enhancement
填入對應的增強介面號
也可選
點選元件,查到對應的出口函式,雙擊可以進入,對立面的include函式雙擊生成新的自定義函式即可。
3、 使用fibf事務(參考《業務交易事件BTE》),這個比較費勁。
事務碼FIBF,回車再輸入Bf24,回車,這裡列出所有的業務交易事件,可以新增條目,輸入產品和描述,儲存
輸入BF34,新增條目,選產品,選擇事件,很多的,找描述接近的,然後把事件號碼放到se37中模糊搜尋,一般會找到對應sample程式,然後把函式名放到函式模組中,儲存,啟用,斷點,然後執行需要增強的程式,看看是否會觸發該介面函式,有則是,沒有就要再重複的找別的出口,直到找到為止。
一切搞好後,在自定義函式上設定斷點,程式執行時就會在斷點處停住,即確認並進行後續程式修改。
以上三種方式,前兩種好用,第三種,相對困難(找介面),是不同時期的SAP產物,還有目前最新的NetWeaver 的badi,使用類物件 interface方式,目前我還沒有用過