需求: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 > ."有入库记录
sum_menge = . 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 = . read table tkomv assigning field-symbol(<ls_komv>) with key kschl = 'PBXX'.
if sy-subrc = .
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 = . "新增了价格
message e899(mm) with tekpo-ebeln tekpo-ebelp '由于已经收货,不允许修改价格。'.
endif.
endif.
endloop. endif.

在CMOD激活这个增强就行了。

作者:明光烁亮
出处:http://www.cnblogs.com/hezhongxun/

微信号:HEme922 欢迎加好友一起交流SAP! 视频资料共享。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

SAP采购订单入库后不允许修改单价增强的更多相关文章

  1. 【MM系列】SAP 采购订单收货后不能修改价格的增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单收货后不能修改价格的 ...

  2. 【MM系列】SAP 采购订单的批量修改

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单的批量修改   前言 ...

  3. 【ABAP系列】SAP 销售订单的行项目里条件的增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...

  4. SAP采购订单历史明细报表源代码(自己收藏)

    SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } ...

  5. SAP采购订单审批记录增强

    采购订单审核函数: BAPI_PO_RELEASE 结尾加上 ENHANCEMENT ZME28_PO. "active version DATA:LS_EKKO TYPE EKKO. DA ...

  6. SAP采购订单屏幕增强

    转自<http://blog.csdn.net/heng0757/article/details/8073875> 为采购订单增加一个页标签,在其中放入客户自定义字段, 1. CMOD 增 ...

  7. SAP 采购订单收货时报错:对于采购订单xxxx无收货可能

    因为这个问题查了挺长时间,所以写在博客里记录下. 报错详细: 每个公司的配置不同,我公司遇到的这个问题原因是这里的确认控制是从信息记录带过来的,问题解决方法是,修改下确认控制的选项: 修改确认控制的后 ...

  8. SAP 采购订单行项目中科目分配被隐藏,发现行项目设置中显示字段长度为0

    1.sm30 维护 视图 TCVIEW 修改对应字段的显示长度

  9. U811.1接口EAI系列之三--采购订单生成--VB语言

    采购订单业务,下面是具体代码与参数说明: 下面调用的通用方法在: http://www.cnblogs.com/spring_wang/p/3393147.html 作者:王春天 2013-10-31 ...

随机推荐

  1. UITextFiled-集合目录

    键盘弹起遮挡输入输入框(UITextFiled或者UITextView)                   对于键盘弹起遮挡输入框的问题以前也想过解决办法比如:监听系统键盘弹出通知.根据每个控件所在 ...

  2. 监控一哥Prometheus你可认识?

    先大致认识认识普罗米修斯 —— Prometheus. 依据官方文档https://prometheus.io/docs/introduction/overview/ 大概能够了解到 Promethe ...

  3. python:匿名函数lambda

    看个例子: a=list(map(lambda x:x*x,(1,2,3))) print(a) 输出:[1, 4, 9] lambda实际上就是匿名函数,相当于: def f(x): return ...

  4. 【docker linux】linux系统镜像转化为docker镜像

    概述 使用docker安装linux的同学都知道,你在docker提供的仓库安装linux系统,你就会体验到最精简的.最纯净的linux系统,当然,他会精简到你连ifconfig命令都需要自己配置,恰 ...

  5. Hadoop(学习&#183;2)

                                                                          Hadoop 操作步骤: 192.168.1.110-113 ...

  6. TCP协议的安全性分析

    有算法就有破解法,因为它们都遵循了一定的数据结构和数学知识.所以网络安全是一个相对的概念,不可能出现绝对的安全!作为当今最流行的网络协议--TCP也是如此.那么TCP的安全问题究竟是哪些因素引起的呢? ...

  7. javascript 入门 select2

    要说这select2,还真是我......,也不是难,反正就对不了!!! 我博客看了一下牛,愣是对不了,后来硬着头看着官方文档,终于出来了. 注意: 1.调用的jquery库一定要能用,网上很多不能用 ...

  8. "文本加粗"组件:<b> —— 快应用组件库H-UI

     <import name="b" src="../Common/ui/h-ui/text/c_tag_b"></import> &l ...

  9. 一、Python3.8的安装

    一:什么是Python解释器 解释器(英语:Interpreter),又译为直译器,是一种电脑程序能够把高级编程语言一行一行直接转译运行. 解释器不会一次把整个程序转译出来,只像一位“中间人”,每次运 ...

  10. 微信小程序与H5数据传递

    这的场景是 小程序webview 加载 H5应用 需求点: 1. 小程序的登录code 需要与H5应用的sessionId建立绑定关系 2.H5内发起微信小程序支付,支付参数传递到小程序,支付结果传递 ...