需求:S4在根據采購訂單做了入庫憑證之后,如果用戶反審批采購訂單去修改單價,系統提示‘已收貨,不允許修改單價’。
判斷流程:是否有入庫憑證
如果采購訂單條件按采購信息記錄定價,這個價格本來就不能修改,只能新增一條PBXX的條件,這里判斷時
還要判斷有沒有PBXX或者只有PB00.
找增強的位置SMOD,然后搜索包ME包含的增強點,這個增強的位置就在
CMOD創建一個項目,填入增強點用於管理。雙擊ZXM06U43創建就行,直接在這里寫代碼。
最后附上代碼
注意:使用的是S4環境,獲取采購訂單條件的表不一樣,S4的是PRCD_ELEMENTS,ecc的好像是KONV.
*&---------------------------------------------------------------------* *& 包含 ZXM06U43 *&---------------------------------------------------------------------* data: sum_menge type ekbe-menge. if sy-tcode = 'ME22N' or sy-tcode = 'ME22'. loop at tekpo. "判斷是否有入庫記錄 select menge,shkzg into table @data(lt_ekbe) from ekbe where ebeln = @tekpo-ebeln and ebelp = @tekpo-ebelp and bewtp = 'E'. loop at lt_ekbe assigning field-symbol(<ls_ekbe>). if <ls_ekbe>-shkzg = 'S'. sum_menge = sum_menge + <ls_ekbe>-menge. else. sum_menge = sum_menge - <ls_ekbe>-menge. endif. endloop. check sum_menge > 0."有入庫記錄 sum_menge = 0. select kposn, "項目 kschl, "條件類型 kbetr "價格 into table @data(lt_price) from prcd_elements where knumv = @i_ekko-knumv and kposn = @tekpo-ebelp. read table lt_price assigning field-symbol(<ls_price>) with key kposn = tekpo-ebelp "是否有新增條件 kschl = 'PBXX'. if sy-subrc = 0. read table tkomv assigning field-symbol(<ls_komv>) with key kschl = 'PBXX'. if sy-subrc = 0. if <ls_price>-kbetr <> <ls_komv>-kbetr. "修改了價格 message e899(mm) with tekpo-ebeln tekpo-ebelp '由於已經收貨,不允許修改價格。'. endif. else. "刪除了價格 message e899(mm) with tekpo-ebeln tekpo-ebelp '由於已經收貨,不允許修改價格。'. endif. else."原po沒有新增條件價格, read table tkomv with key kschl = 'PBXX' transporting no fields. if sy-subrc = 0. "新增了價格 message e899(mm) with tekpo-ebeln tekpo-ebelp '由於已經收貨,不允許修改價格。'. endif. endif. endloop. endif.
在CMOD激活這個增強就行了。
作者:明光爍亮
出處:http://www.cnblogs.com/hezhongxun/
微信號:HEme922 歡迎加好友一起交流SAP! 視頻資料共享。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。