ME22N 采购订单行项目删除控制

ME22N增强,行项目不允许删除

需求:如果采购订单行项目被其它计划占用,则不允许删除。

虽然需求只有一句话,但是坑不少!!!

增强方式:选择了badi增强IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM

一共有3个要点
①若行项目删除标识为‘L’,行项目前会显示已删除图标。所以判断为不允许删除后,必须清空删除标识。
CLEAR:ls_item_data-loekz.
im_item->set_data( ls_item_data ).
在这里插入图片描述

②数据一旦发生变更,会二次触发增强。此时因为删除标识已被清空,所以不会报不允许删除的错误。解决方式是引入共享内存ZDELFLG。第一次触发增强时,清空删除标识,标记ZDELFLG,第二次触发时,判断ZDELFLG是否被标记,标记则报错,释放ZDELFLG避免影响其它行项目操作。
在这里插入图片描述

③上面虽然解决了已删除图标的问题,但仍然存在问题。多条行项目同时删除时,因为ZDELFLG被提前释放导致不报错,所以要推迟ZDELFLG释放节点。解决办法时引入共享内存ZDELID记录最后一条删除行项目的ID,二次触发增强时(判断ZDELFLG为X且行项目删除标识为空)时报错,处理完最后一条行项目时释放这两个共享内存。
在这里插入图片描述

④最后呈现的效果是这样的:行项目红灯+报错
在这里插入图片描述

且不会影响后续修改操作的报错。

此方法稍显笨拙,也欢迎大家指正或提出更好的解决方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值