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 > ."有入库记录
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采购订单入库后不允许修改单价增强的更多相关文章
- 【MM系列】SAP 采购订单收货后不能修改价格的增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单收货后不能修改价格的 ...
- 【MM系列】SAP 采购订单的批量修改
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单的批量修改 前言 ...
- 【ABAP系列】SAP 销售订单的行项目里条件的增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...
- SAP采购订单历史明细报表源代码(自己收藏)
SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } ...
- SAP采购订单审批记录增强
采购订单审核函数: BAPI_PO_RELEASE 结尾加上 ENHANCEMENT ZME28_PO. "active version DATA:LS_EKKO TYPE EKKO. DA ...
- SAP采购订单屏幕增强
转自<http://blog.csdn.net/heng0757/article/details/8073875> 为采购订单增加一个页标签,在其中放入客户自定义字段, 1. CMOD 增 ...
- SAP 采购订单收货时报错:对于采购订单xxxx无收货可能
因为这个问题查了挺长时间,所以写在博客里记录下. 报错详细: 每个公司的配置不同,我公司遇到的这个问题原因是这里的确认控制是从信息记录带过来的,问题解决方法是,修改下确认控制的选项: 修改确认控制的后 ...
- SAP 采购订单行项目中科目分配被隐藏,发现行项目设置中显示字段长度为0
1.sm30 维护 视图 TCVIEW 修改对应字段的显示长度
- U811.1接口EAI系列之三--采购订单生成--VB语言
采购订单业务,下面是具体代码与参数说明: 下面调用的通用方法在: http://www.cnblogs.com/spring_wang/p/3393147.html 作者:王春天 2013-10-31 ...
随机推荐
- UITextField - 为正文设置缩进
实现思路: 把UITextField的leftView当做填充位置,这样就实现了文字偏移. 代码: UILabel *label = [[[UILabelalloc] initWithFrame:CG ...
- fstream
fstream file("b.txt", ios::in|ios::out|ios::app); mode ate - seek to the end of stream imm ...
- .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡
1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- PTA | 1009说反话(20分)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有 ...
- ELK数据批量导入
数据批量导入 • 使用 _bulk 批量导入数据 – 批 ...
- 薅羊毛? 月入10万? | 这是自动化测试老司机的特长--Python自动化带你薅视频红包,一个都不放过!
一.目标场景 如今短视频横行的时代,以某短视频为首的,背后依靠着强大的资金后盾,疯狂地对平台用户进行红包轰炸. 与传统的红包不一样,视频红包包含位置的不确定性.大小不确定性.元素 ID 的不确定性 ...
- Loop Unrolling 循环展开
在csapp第五章5.2中提到了循环展开(loop unrolling).这里展开一下为什么循环展开可以提升程序的效率. 以书中计算数组和的两段代码为例: 1.未展开: void psum1(floa ...
- uni_app商城项目(完成)
总结: 1.uni-app的跨段适配性,真的特别强,完成相关代码的书写,HbuilderX编辑器提供的打包十分方便. 2.开发小程序,H5等移动端开发, 比开发电脑端简单不少,但有时候坑也挺多的. 3 ...
- XSS(跨站脚本攻击)简单讲解
1.1 XSS简介 跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码(一般是JS代码)到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意 ...
- 35 编码 ASCII Unicode UTF-8 ,字符串的编码、io流的编码
* 编码表: * 信息在计算机上是用二进制表示的,这种表示法让人理解就很困难.为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表 *ASCII ...