运行MRP(MD01)屏幕不可编辑增强

本文探讨如何在MD01的本地件功能平台调用时,设置特定用户出口码和参数为默认值且不可修改。方法包括:1) 使用SY-CALLD系统参数判断调用状态;2) 导出导入内存标识区分调用;3) 创建ZMD01包装并获取原始tcode。避开对标准程序的影响,确保灵活性与隔离性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

●目的●

通过客制化自开发本地件功能平台来调用MD01跑MRP时,界面上用户出口码和用户出口参数想默认一个值,并且不能修改。

●步骤●

看到这个需求,我们很明确的是,屏幕不可编辑,那是需要在PBO里进行控制的,包括赋值亦如此。但是,我们要考虑一个问题,就是只有在MD01被平台调用的这个时候才赋值并且不可编辑,其他正常情况使用MD01时,是可编辑的。基于此,我这边提供几种办法来处理。

01

第一种

使用系统参数SY-CALLD来判断MD01是被调用的还是独立运行的(为X时代表被调用,空值是独立运行)。找到MD01的屏幕,在PBO里,随便找个合适的位置就可以编写4代增强了。

 

本示例中我们选择在第一个Module下的Subroutine form:READ_T450N中进行增强

 

 

虽然这种方法能解决,但是有一个缺陷。那么是什么缺陷呢,大家想想,既然我自开发平台能来调用MD01,那系统标准的程序有没有来调用的?万一有呢,那这个赋值不是就影响了标准程序的运算结果?针对以上这种思考,我想了另外两种办法。

02

第二种

通过Export/Import Memory给标识的方式来判定。在我们调用的程序里Export一个标识到Memory中,然后在被调用程序(MD01)中Import这个标识,有值就走赋值和不可编辑逻辑,否则什么都不操作。

03

第三种

我们对MD01进行tcode包装,创建一个ZMD01的tcode。

 

在调用程序里,调用ZMD01这个tcode,在被调用程序中通过tcode来判断。

但是通过上图,我们发现一个问题,即使外层包装了新tcode,但是sy-tcode的值还是MD01,怎么破?

其实是有个办法获取到原始的tcode,程序中可以使用此代码获取

CALL 'GET_PARAM_TCOD' ID 'PTCOD' FIELD lv_tcode.

 

这种办法做出来增强之后,即使不通过平台调用,ZMD01也可以单独使用,还能跟MD01区分开。

END

图文来源:成旭平

图文编辑:Esther

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值