zoukankan      html  css  js  c++  java
  • 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! 视频资料共享。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    [CareerCup] 4.6 Find Next Node in a BST 寻找二叉搜索树中下一个节点
    Android 接入支付宝支付实现
    Android 设置软键盘搜索键以及监听搜索键点击事件
    Android 应用监听自身卸载,弹出用户反馈调查
    ndk制作so库,ndk-build不是内部或外部命令。。。的错误
    Error: Your project contains C++ files but it is not using a supported native build system
    Android开发之——依赖冲突Program type already present
    基于Python的开源人脸识别库:离线识别率高达99.38%
    Android5.0以后,materialDesign风格的加阴影和裁剪效果
    Android 5.0 以上监听网络变化
  • 原文地址:https://www.cnblogs.com/hezhongxun/p/12808533.html
Copyright © 2011-2022 走看看