简介:这份SAP生产预留操作指引面向SAP MM与PP模块的初学者及运维人员,聚焦生产过程中原材料、半成品与成品的预留管理,帮助解决预留创建、查询与可用性检查等日常操作问题。资源为单个docx文档,压缩包约836KB,内容按目录组织,涵盖预留背景、OMC2预留编码、缺省值与工厂级参数配置、预留可用性检查,以及MB21手动创建、MB23按编号查询、MB25按物料查询、MBBR批量创建、MBVR批量处理和生产自动预留等事务码操作,并附预留底表与预留数不超过库存数等要点。目前已有695人学习下载,适合需要快速上手生产预留配置与事务码操作、对照排查预留异常的用户参考。
1. 从一次预留数量对不上库存的翻车说起
生产预留这东西,平时不显山不露水,真到发货那天对不上数,产线能直接停给你看。我见过最常见的翻车场景:物料库存 1001 个,可用只有 999,有人偏要建 1000 的预留,系统当场报错,操作员一脸茫然——"库存明明够啊"。问题就出在预留可用性检查和动态可用性规则没配对,MB21 建单时校验的是可用量,不是库存总量。这套环境在制造业 SAP 里几乎家家都有,装不好、配不对,轻则预留建不出来,重则 MRP 跑出来的需求全是错的。这篇笔记面向正在配 SAP 生产预留的开发和运维,从号码段、缺省值一路写到批量清理和自动预留,照着走能跑通,踩过的坑也一并标出来。
2. 预留基础配置:号码段、缺省值与工厂参数
2.1 预留编码 OMC2 的号码段分配
预留编号是系统自动给的,规则在 OMC2 里定。路径是 SPRO-物料管理-库存管理和实际库存-号码分配-为预留定义号码分配。这一步不做,MB21 建单时系统不知道从哪个号段取号,直接卡死。
# 事务码 OMC2 进入后,按以下顺序操作 # 1. 选择号码范围组,通常用 01 # 2. 维护号码范围:起始号、截止号、当前编号 # 3. 状态设为"已分配",否则建单报"号码范围未分配"号码段一般用内部给号,起始号从 0000000001 开始,截止号按业务量估,别一上来就开到 9999999999,后期想扩号段反而麻烦。当前编号是系统自己跳的,不要手动改。状态那一列必须是"已分配",我见过有人只填了号段没点分配,结果 MB21 报错查了半天。
2.2 缺省值配置与 MVT 移动开关
缺省值决定前台建预留时哪些字段默认带出来。路径 SPRO-物料管理-库存管理和实际库存-预留,重点是 MVT 勾选。勾上之后,前台建单时 M 列默认全勾,表示"允许移动",也就是这行预留随时可以发货。
前台也能改:菜单 编辑-附加功能-用于所有项目-移动开关,可以批量控制多行项目的 M 是否勾选。三个关键参数要记牢:
| 参数 | 含义 | 典型值 |
|---|---|---|
| 天数 M | 可提前发货的工作日天数 | 10 |
| 保持 | 预留保留天数,超期物理删除 | 30 |
| MRA | 为预留自动创建存储地点库存数据 | 按需勾选 |
天数 M 填 10,意思是需求日期前 10 个工作日就能发货。保持填 30,意思是预留建完 30 天内没动,MBVR 跑的时候会被物理删掉。MRA 这个开关看业务,如果预留要落到具体存储地点,就勾上。
2.3 工厂级预留参数配置
后台路径:物料管理-库存管理和实际库存-工厂参数。这里配的是工厂维度的预留行为,比如是否允许负库存预留、预留的默认移动类型。工厂参数和缺省值是两层控制,缺省值管前台默认值,工厂参数管工厂级校验规则。两个都配好,MB21 建单才不会出现"字段灰掉改不了"或者"默认值不对"的情况。
2.4 预留可用性检查的动态规则
这是最容易配错的地方。路径 SPRO-物料管理-库存管理和实际库存-预留-设置动态可用性检查。规则由两个东西决定:物料主档 MRP3 里的可用性检查,和这里配的事务代码规则。02 和 03 这两个规则直接决定 MB21/MB22 建单时走哪套校验。
# 动态可用性检查配置要点 # 1. 事务代码 MB21 对应规则 02 # 2. 事务代码 MB22 对应规则 03 # 3. 规则里定义检查范围:库存、采购订单、生产订单等 # 4. 物料主档 MRP3 的可用性检查字段必须填对应规则组物料主档 MRP3 里那个可用性检查字段如果空着,动态检查就不生效,建预留时系统不校验可用量,想建多少建多少——这恰恰是很多人想要的效果,但也是库存对不上的根源。要控制预留数不超过库存数,这个字段必须填,规则必须配。
3. 手动与批量预留操作:MB21 到 MBVR 全流程
3.1 MB21 手动创建预留
业务场景很明确:新品研发没法对工单发料,又想把消耗纳入 SAP 全局控制,就走成本中心预留。适用于转储、成本中心投料。
# MB21 操作步骤 # 1. 事务码 MB21 进入创建预留界面 # 2. 输入物料、工厂、需求日期、数量 # 3. 移动类型按需求选:成本中心 201,生产 261,研发 Y10 # 4. 勾选 M 表示允许移动,临近发货才勾,不勾不可用 # 5. 保存后系统给出预留编号移动类型选错是最常见的坑。201 是成本中心领用,261 是生产订单发料,Y10 是研发专用。选错了后续 MIGO 发货时科目不对,财务那边对不上账。M 勾选时机也有讲究,一般临近发货才勾,提前勾了万一需求取消,还得回头取消勾选。
3.2 MB23 与 MB25 查询预留
MB23 按预留编号查,MB25 按物料查。这两个事务码是日常排查的主力。MB23 输入预留号,能看到预留状态、数量、日期、移动类型。MB25 输入物料和工厂,列出该物料所有预留。
# MB23 查询 # 输入预留编号,回车 # 查看:预留状态、已发货量、剩余可用量 # MB25 查询 # 输入物料、工厂、预留日期范围 # 列出所有匹配预留,可下钻到单条MB25 查出来的列表里,注意看"已发货"和"剩余"两列。如果剩余为 0 但预留还没删,说明货已发完但预留没清,这种残留预留会占着可用量,MRP 跑的时候会误判。
3.3 MBBR 批量创建与 MBVR 批量处理
MBBR 用于批量创建预留,适合一次性建几十上百条的场景。MBVR 是批量处理,核心用途是清理超期预留和批量勾选 M。
# MBVR 运行逻辑(基于后台配置) # 基准日期 - 过去需求日期 > 30 天 → 删除该预留 # 将来需求日期 - 基准日期 < 10 天 → 自动勾选"允许移动" # 一般配两个 JOB,一个跑 30 天清理,一个跑 10 天勾选,每天各一次这里有个血泪经验:MBVR 不会自动跑,必须配后台 JOB。后台配了"保持 30 天""允许移动 10 天",但没人跑 MBVR,系统永远不会自动清超期预留。我见过一个系统跑了三年,RESB 表里堆了几十万条废预留,MRP 性能直接拖垮。配 JOB 的时候注意,清理 JOB 和勾选 JOB 分开,别混在一个变式里。
3.4 预留底表 RKPF 与 RESB
排查底层问题绕不开这两张表。RKPF 是凭证头,RESB 是行项目。
-- 按预留编号查底表 SELECT * FROM RKPF WHERE RSNUM = '预留编号'; SELECT * FROM RESB WHERE RSNUM = '预留编号'; -- 查某物料所有未清预留 SELECT a.RSNUM, a.BDMNG, a.ENMNG, b.WERKS, b.MATNR FROM RESB a JOIN RKPF b ON a.RSNUM = b.RSNUM WHERE b.MATNR = '物料号' AND a.ENMNG < a.BDMNG;RSNUM 是预留编号,BDMNG 是需求数量,ENMNG 是已发货数量。ENMNG 小于 BDMNG 说明还有未清量。直接改底表是禁忌,但查底表定位问题是常规操作。MB23 查不到的历史预留,往往能在 RESB 里翻出来。
4. 生产自动预留:OPL8 与工单联动配置
4.1 OPL8 控制订单类型是否预留
路径 SPRO-生产-生产线控制-主数据-订单-定义订单类型的相关参数。这里控制生产订单是否自动生成预留,以及什么时候生成。
# OPL8 配置项 # 1. 选择订单类型,如 PP01 # 2. 找到"预留/依赖需求"相关参数 # 3. 选项:从不 / 下达后 / 立即 # - 从不:不生成预留 # - 下达后:状态变 REL 才生成 # - 立即:创建订单就生成选"立即"最省事,订单一建预留就有了,MB23 马上能查到。选"下达后"的话,订单没下达之前 MB23 查不到预留,容易让人误以为没生成。选"从不"就是完全不走预留,靠其他方式控制物料,一般不用。
4.2 工单自动预留的查看与限制
自动生成的预留通过 CO03 看 BOM,或者 MB23 直接查。自动预留有个硬限制:不能改。MB22 改不了自动预留,但可以 MIGO 发货。
# 查看自动预留 # CO03 进入订单 → 转到 → 预留/依赖需求 # 或 MB23 输入预留编号(从订单里抄) # 自动预留的限制 # MB22 修改 → 报错"自动预留不可更改" # MIGO 发货 → 正常执行承诺量和预留不是一回事。承诺量是 ATP 检查用的,预留是实际物料锁定。工单自动预留生成后,如果发现 MB21 手工建不了预留,别慌——系统已经自动建了,去 MB23 查就行。我一般建议:生产订单走自动预留,非生产场景走 MB21 手工预留,两条路别混。
4.3 预留数不超过库存数的控制逻辑
这是可用性检查的最终效果。库存 1001,已预留 2,可用 999。建 1000 的预留可以,建 1001 就不行——因为可用只有 999。
# 控制生效的前提 # 1. 物料主档 MRP3 可用性检查字段已填 # 2. 动态可用性检查规则 02/03 已配 # 3. 工厂参数允许预留校验 # 三者缺一,控制就不生效库存不够时能不能建预留,取决于配置。A 场景库存不够可以建,B 场景库存不足不能建。区别就在可用性检查规则里有没有把库存作为硬约束。要严格控制,就把规则配死;要灵活,就留口子。没有对错,看业务。
5. 避坑排查:预留配置里最容易翻车的五件事
5.1 MB21 建单报"号码范围未分配"
现象:MB21 保存时弹错误,提示号码范围未分配或号码段不存在。
原因:OMC2 里号码段配了但状态没设成"已分配",或者当前编号超了截止号。
解决:进 OMC2 检查号码范围组,确认状态列是"已分配",当前编号没超上限。超了就扩截止号,别新建号段。
5.2 预留建了但 MRP 不认
现象:MB21 建了预留,跑 MRP 时需求没带出来。
原因:预留的移动类型或需求日期不在 MRP 考虑范围内,或者预留被标记为"不相关需求"。
解决:检查预留行项目的 MRP 相关标识,确认需求日期在 MRP 运行区间内。移动类型 201 这类成本中心预留,默认可能不参与 MRP,需要在配置里放开。
5.3 MBVR 跑了但超期预留没删
现象:配了 30 天保持期,MBVR 也跑了,超期预留还在。
原因:基准日期取的是系统当前日期,如果预留的需求日期在未来,或者保持期参数没生效,就不会删。
解决:确认 MBVR 变式里的基准日期设置,检查后台"保持"参数是否真的保存了。跑之前先用测试模式看清单,别直接删。
5.4 自动预留和手工预留冲突
现象:生产订单自动生成了预留,想再手工建一条,MB21 报错。
原因:同一物料同一需求日期,系统不允许重复预留。
解决:MB23 查一下是不是已经有自动预留了。有的话直接用,别手工建。要调整数量,走 MB22 改手工预留,自动预留改不了就走订单变更。
5.5 可用性检查不生效,预留数超库存
现象:库存 100,建了 200 的预留,系统不报错。
原因:物料主档 MRP3 可用性检查字段空着,或者动态检查规则没配 02/03。
解决:补 MRP3 字段,配动态可用性检查规则。改完对已有物料可能要跑一遍物料主档批量维护。
6. 装完怎么验证:三条命令确认预留环境跑通
配置全做完,别急着上线,先跑一遍验证。我一般按这三步走,每一步都能独立确认一个环节。
第一步,建一条手工预留,确认号码段和缺省值生效。
# MB21 建预留 # 物料:选一个库存充足的 # 数量:填库存可用量以内 # 移动类型:261 # 保存,记下预留编号保存成功说明 OMC2 号码段、缺省值、工厂参数都通了。如果报错,回头查第 5.1 节。
第二步,用 MB23 查刚建的预留,确认可用性检查生效。
# MB23 输入预留编号 # 查看"可用量"字段 # 再建一条超可用量的预留,确认系统报错能查到预留,说明底表 RKPF/RESB 写入正常。超量建单报错,说明动态可用性检查生效。这一步过了,预留数不超过库存数的控制就落实了。
第三步,跑一次 MBVR 测试模式,确认批量处理逻辑对。
# MBVR 进入,选测试运行(Test Run) # 看输出清单:哪些会被删、哪些会被勾选 M # 确认清单符合预期后,再跑正式运行测试模式不写数据库,只看逻辑。清单里该删的没删、该勾的没勾,就回去查后台"保持"和"天数 M"参数。三个 JOB 配好之后,每天定时跑,预留环境才算真正闭环。
验证清单我整理成一张表,上线前逐项打勾:
| 验证项 | 事务码 | 通过标准 |
|---|---|---|
| 号码段分配 | OMC2 | 状态"已分配",能自动给号 |
| 缺省值生效 | MB21 | M 列默认勾选,字段默认值正确 |
| 可用性检查 | MB21 | 超可用量建单报错 |
| 自动预留 | OPL8 + CO03 | 订单创建后 MB23 能查到预留 |
| 批量清理 | MBVR | 测试模式清单符合预期 |
| 底表写入 | MB23 + RESB | 预留编号在 RKPF/RESB 有记录 |
从那以后我每次配完预留环境,都强制走一遍这三步验证,尤其是 MBVR 的测试模式,绝不跳过直接跑正式。吃过一次亏——测试模式没跑,正式运行删了一批还没到期的预留,产线第二天领料发现预留没了,查了半天才定位到是保持期参数填错了。希望帮到你,少走这段弯路。
本文还有配套的精品资源,点击获取