SAP采购订单入库后不容许修改单价加强

需求:S4在根据采购订单作了入库凭证以后,若是用户反审批采购订单去修改单价,系统提示‘已收货,不容许修改单价’。微信

判断流程:是否有入库凭证oop

     若是采购订单条件按采购信息记录订价,这个价格原本就不能修改,只能新增一条PBXX的条件,这里判断时spa

             还要判断有没有PBXX或者只有PB00.code

找加强的位置SMOD,而后搜索包ME包含的加强点,这个加强的位置就在视频

 

 

 

CMOD建立一个项目,填入加强点用于管理。双击ZXM06U43建立就行,直接在这里写代码。blog

 

 

 最后附上代码element

注意:使用的是S4环境,获取采购订单条件的表不同,S4的是PRCD_ELEMENTS,ecc的好像是KONV.get

*&---------------------------------------------------------------------*
*& 包含               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! 视频资料共享。
本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。it

相关文章
相关标签/搜索