1. 程式人生 > >SAP 增強學習(1):一代增強 USER EXIT

SAP 增強學習(1):一代增強 USER EXIT

程式:MV45AFZZ

下面以建立銷售訂單(VA01)內的一代增強為例,當選擇某些指定的銷售訂單的型別時,PO NUMBER變成必輸項。。

  1. 介紹

SAP的一代增強我稱之為USER EXIT(使用者出口),從字面上也很好理解,就是SAP在標準的程式中有預留了一些給使用者後續增加新功能的出口USER EXIT。我們就在這些地方寫程式碼來實現我們需要的功能。如下圖,一代在程式中是以CALL CUSTOMER-FUNCTION+編號區別的。

而在SE37中通過EXIT_主程式名(這裡是SAPMV45A)_編號(這裡是002)來查詢,如下圖

然後就在INCLUDE內寫程式碼就好了,需要注意的是一代增強相當於是在改SAP的標準程式,所以是會需要開發KEY的!

  1. 學習的步驟:
  1. 首先要使PO NUMBER變為必輸項,必須要知道要在什麼地方寫增強,這就是寫一代增強的第一步也是最難的一部。這裡通過SPRO(後臺配置)來找,在下圖使用者出口下的那些就是有可能是我們要寫增強的地方了。

  1. 通過檢視描述來初步確定我們的需求是在哪個程式中的

也可以在開發類VMOD內直接查詢,VMOD類下的包含內的程式都是上圖中的那些增強的程式。是一樣的。

  1. 根據描述找到我們需要些程式碼的程式名MV45AFZZ
  2. USEREXIT_SAVE_DOCUMENT_PREPARE(通過名字也可以看出是儲存前的操作)內寫程式碼

需要注意的是,寫增強的時候最好是先加上類似上圖的第一個IF語句,這樣的話只有開發人員自己才會觸發這個增強,其他的員工進行這個操作時並不會受到影響。這樣不會導致自己在寫這個增強的時候別人用不了這個程式或者相應的事務碼。

學習心得:一代增強現在用的很少了,因為他的需求只能在固定的程式內去實現,意味著開發人員的工作量會很大,而且侷限性也很大。比如說它只支援系統的標準的程式。有些需求如果系統開發人員本身也沒考慮到的話也沒法實現。

容易的地方: 寫程式碼的邏輯、流程完全和寫普通的程式類似。

難點:找增強點困難。