金色传说:SAP-ABAP-物料凭证增强:锁定库存地点不能生成物料凭证(限制库存物料进出)


前言

相信公司都会有盘点的需求,或者类似锁定库存地点,控制物料不能进出的的需求,本人进行过很多尝试,例如:WM的盘点凭证锁定库存地点,通过OKP1锁定过账等等,这些方式都能实现,但很明显有很多缺陷,WM盘点凭证操作复杂,很多公司也并没有使用WM模块;OKP1是锁定全局,一般是月结时才会使用,不够灵活。本文介绍一种简单方式来实现锁定库存地点,限制此库存地点的物料进出/变动


提示:以下是本篇文章正文内容,下面案例可供参考

一、物料进出的本质是什么?

在SAP中,物料的消耗,转储,调拨,报废,进货等的本质其实是通过物料凭证来实现的,那我们就可以从物料凭证方面去考虑限制它的产生来达到锁定库存地点的目的。

二、实现步骤

1.物料凭证增强

这里要使用到一个比较简单的增强:CMOD:MBCF0002的组件EXIT_SAPMM07M_001
这个增强点,在MIGO中进行检查和过账时都会进入。
代码如下(示例):

*数据定义
 DATA: lv_msgv1  TYPE sy-msgv1,
       lv_msgv2  TYPE sy-msgv2.
*根据过账的收发货库存地点判断自建表中的库存地点是否已锁定       
     SELECT SINGLE zflag INTO @DATA(gs_flagf) FROM ztlocklocation WHERE lgort = @i_mseg-lgort."发货库存地
     SELECT SINGLE zflag INTO @DATA(gs_flags) FROM ztlocklocation WHERE lgort = @i_mseg-umlgo."收货库存地
     IF gs_flagf EQ 'X' OR gs_flags EQ 'X'."有锁定标识,则提示不能产生物料凭证
       IF gs_flagf EQ 'X'.
         lv_msgv1 = '发货库存地点:' && i_mseg-lgort.
       ELSE.
         lv_msgv1 = '收货库存地点:' && i_mseg-umlgo.
       ENDIF.
       lv_msgv2 = lv_msgv1 && ' 已被锁定,不能生成物料凭证!'.
       MESSAGE e346(wz) WITH lv_msgv2.
     ENDIF.

2.自建表结构

代码如下(示例):
建自建表时,维护表生成器创建SM30的表维护,便于将维护视图分配事务代码进行权限管理。
在这里插入图片描述

3.分配事务代码

TCode:SE93,选择参数事务
在这里插入图片描述
跳过初始屏幕。
在这里插入图片描述
添加属性字段VIEWNAME,值为SM30中的视图名称
UPDATE为X表示默认是修改界面,SHOW为X是默认显示界面
在这里插入图片描述
维护新条目,打勾表示锁定该库存地点
在这里插入图片描述


功能测试

MIGO,进行物料移动,收货库存地是1421
在这里插入图片描述
点击检查或过账,收到错误提示:收货库存地点1421已锁定.
在这里插入图片描述
以上
不妥之处欢迎留言指正。手动笑脸
欢迎关注公众号,每日更新:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EasyStudios

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值