SAP采購訂單入庫后不允許修改單價增強


需求: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! 視頻資料共享。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM