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

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

●目的●

通过客制化自开发本地件功能平台来调用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

<think> 嗯,用户这次深入询问SAP后台MRP运行MDBS和MSBT的具体操作和注意事项,看来是个有经验的SAP供应链顾问或计划员。用户特意强调要参考前文内容,说明需要专业连贯的指导。 从技术细节看,MDBS(物料主数据批量选择)和MSBT(物料批量选择扩展)是后台MRP运行的关键前置步骤,涉及大规模物料筛选逻辑。需要重点说明两者的协同关系:MDBS负责基础筛选(如MRP类型、物料工厂组合),MSBT则处理复杂附加条件(替代物料、计划员分组等)。 用户没提具体SAP版本,但MDBS/MSBT在ECC和S4HANA中核心逻辑一致。需特别注意两点:1)后台参数设置对性能的影响,尤其是“测试运行勾选”这类容易忽略的细节;2)批量日志分析技巧,这是用户实际运维中的痛点。 上次回答已覆盖基础操作流程,这次应强化企业级应用的注意事项。比如筛选范围过大会导致后台作业超时,需要建议用户按“计划区间”分批次运行。另外补充一个实际案例:某制造企业因未设置MSBT中的“跨工厂补充”导致库存失衡,这类实战经验比手册更有参考价值。 用户显然需要可落地的方案,所以最后加入“替代方案”部分,说明MDBC/MD01组合的适用场景。虽然用户没问对比,但实际工作中常需权衡方案效率。 </think> 在SAP后台运行MRP(物料需求计划)时,**MDBS**(物料主数据批量选择)和**MSBT**(物料批量选择扩展)是关键的筛选工具,用于控制执行范围。以下是详细操作方法和注意事项: --- ### **一、MDBS(事务代码)** #### **功能** 批量选择需运行MRP的物料主数据组合(物料+工厂),基于MRP参数(如MRP类型、计划区间等)筛选目标物料 **操作路径**: ```SAP Menu → Logistics → Production → MRP → Evaluations → Material Selection for Planning Run → MDBS``` #### **操作步骤** 1. **输入选择条件** - `Material`: 物料号范围(留空表示全选) - `Plant`: 工厂范围 - `MRP Type`: 筛选特定MRP类型的物料(如`PD`-按需计划) - `Planning File Entry`: 勾选`*`(仅选择计划文件中有变更的物料) *示例:筛选工厂`1000`下所有PD类物料* ![MDBS筛选界面](https://example.com/mdbs_screen.png)[^1] 2. **生成选择列表** - 执行后生成物料清单,保存为变式(Variant)供后续调用 3. **提交后台作业** - 点击`Schedule Background Job` - 设置优先级、执行时间(如非高峰时段) #### **注意事项** - ⚠️ **范围控制**:避免全选所有物料,优先按计划文件变更(Planning File Entry)运行以提升效率 - ⚠️ **变式管理**:保存常用变式避免重复配置 - ️ **日志监控**:通过事务代码`SM37`检查后台作业日志 --- ### **二、MSBT(事务代码)** #### **功能** 扩展MDBS的筛选能力,支持更复杂的条件组合(如计划员组、特定物料状态) **操作路径**: ```SAP Menu → Logistics → Production → MRP → Evaluations → Material Selection with Additional Criteria → MSBT``` #### **核心扩展条件** | 字段 | 说明 | 应用场景 | |---------------|--------------------------|---------------------------| | `Planner Group` | 计划员组 | 按责任部门分批运行MRP | | `Stock Status` | 库存状态(非限制/质检) | 排除质检库存的物料 | | `Procurement Type` | 采购类型(F/E/X) | 仅处理外购物料 | | `Special Procurement` | 特殊采购标识 | 筛选委外加工物料 | #### **操作流程** 1. 复用MDBS变式或新建筛选条件 2. 在扩展界面补充附加条件 3. 提交后台作业(同MDBS) --- ### **三、关键注意事项** 1. **性能优化** - 分批次执行:按工厂/物料类型分割任务,避免单次作业过大 - 避开高峰:设置后台作业在夜间或低负载时段执行 - 使用`Planning File Entry`:仅处理有变更的物料(如库存变动、订单修改) ```abap " 计划文件更新触发条件示例 MARC-DISMM = 'PD' " MRP类型为PD MARC-DISPO = '001' " 计划员代码变更 ``` 2. **错误预防** - **测试运行**:首次执行前勾选`Test Run`(事务代码MD01/MD02),验证物料范围 - **锁定机制**:运行期间禁止相关物料主数据变更(如MM01/MM02) - **日志分析**:检查`MD07`异常清单(未覆盖需求、BOM错误等) 3. **集成逻辑** - MDBS/MSBT结果自动传递至MRP核心事务`MD01`(后台模式) - 结果存储在表`PBIM`(计划文件条目)中 --- ### **四、替代方案对比** | 事务代码 | 适用场景 | 限制 | |----------|-------------------------------|---------------------| | **MDBS** | 基础物料筛选(工厂/MRP类型) | 无法组合复杂条件 | | **MSBT** | 多维度联合筛选(计划员组/库存状态) | 依赖MDBS变式 | | **MDBC** | 跨工厂集中运行 | 需配置计划参数文件 | | **MD01** | 前台单物料运行 | 不适用于大规模计划 | --- ### **相关问题** 1. 如何通过`MD07`分析MRP运行后的异常需求? 2. SAP中计划文件(Planning File)的更新机制是什么? 3. 后台MRP作业因"内存不足"终止应如何解决? 4. 如何配置计划参数文件(Schedule Profile)以优化MRP性能? [^1]: SAP Help Portal: Material Selection for Planning Run (MDBS) [^2]: SAP Note 215548 - FAQ: Material Requirements Planning
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值