简介:面向SAP MM/PP模块用户及生产计划、物料管理岗位的学习者,这份docx操作指引聚焦生产预留从配置到查询的完整流程,可用于岗位培训、日常操作对照与问题排查。压缩包内仅1个docx文件,大小约836KB,内容以步骤说明和事务码讲解组织,适合按目录快速定位。文档围绕预留背景、OMC2预留编码、缺省值及工厂级参数配置展开,并讲解预留可用性检查、MB21手动创建与维护、MB23按预留编号查询、MB25按物料查询、MBBR批量创建、MBVR批量处理,以及OPL8生产订单控制、工单自动预留和预留底表等要点,兼顾概念理解与实操参照。目前已有697人学习,可帮助读者梳理常见预留场景的操作路径与检查思路。
1. 先搞清楚 SAP 生产预留到底在解决什么问题
SAP 生产预留不是把库存锁死,而是先占一个需求凭证:告诉系统这批料在某个日期要出库,MRP 要把它算进去,仓库发货时能查到对应依据。这份《SAP-生产预留-操作.docx》把后台配置、手动 MB21、批量 MBBR、清理 MBVR、工单自动预留 OPL8 和底表 RKPF/RESB 串成了一条线。
适合正在做 MM/PP 模块的关键用户、内部顾问和运维,尤其是新品研发没有工单却要控制消耗、生产订单自动预留重复报错、月底发货发现 M 标志没勾的场景。下面按配置到操作到排查的顺序拆。
2. SAP 生产预留的后台骨架:OMC2、缺省值和动态可用性检查
后台配置决定了前台 MB21 长什么样、保存时会不会报可用性检查、预留放久了会不会被清掉。很多人一上来就急着建预留,结果编号段没分配、MVT 没勾、动态检查规则没落到物料主档,前台操作就会时灵时不灵。血泪经验是先把这几项配完,再用一条测试预留跑通,别等月底发货才翻车。
2.1 OMC2 号码分配:先定编号段,再谈操作
预留编号 RSNUM 是后面 MB23、MBBR、MBVR 和底表查询的钥匙。OMC2 管的就是这个编号段。路径在 SPRO-物料管理-库存管理和实际库存-号码分配-为预留定义号码分配。进去后先看号码范围有没有分配给预留对象,再看当前编号用到哪里、是否年度相关。
常见做法是内部编号给系统自动生成,外部编号只留给接口或批量导入,并且要加校验,避免外部传重。号码段不要等用尽才补,尤其是测试客户端和生产客户端共用传输时,号段被写坏会导致 MB21 保存直接报号码范围不存在。操作步骤可以按下面走:
- 进 OMC2,检查预留对应的编号范围是否存在。
- 维护号码范围:起始、截止、当前编号,确认年度依赖是否符合公司要求。
- 把号码范围分配给预留对象,保存并传输到测试客户端。
- 用 MB21 建一条测试预留,记下 RSNUM,确认编号连续且能 MB23 查到。
- 如果用了外部编号,补一段导入校验,重复编号在保存前拦掉。
| 配置项 | 建议 | 原因 |
|---|---|---|
| 编号范围类型 | 内部为主,外部为辅 | 内部连续,外部容易重复 |
| 当前编号 | 上线前预留余量 | 号段用尽会阻断 MB21 |
| 年度依赖 | 按公司编号规则统一 | 跨年度复制号段容易漏 |
| 传输 | 配置随请求传输 | 测试和生产号段不一致会报错 |
注意:OMC2 改完不要只在自己的客户端测试,换一个没缓存的用户再跑一次 MB21,确认号码段已经生效。
2.2 缺省值:MVT、天数 M、保持 30 天和 MRA 到底管什么
缺省值路径在 SPRO-物料管理-库存管理和实际库存-预留。这里几个字段直接影响前台操作习惯:MVT 勾选后,前台新建预留时行项目的 M 标志默认勾上;天数 M 表示可以提前发货的工作日天数,原文给的是 10 天;保持表示预留可以保留 30 天,超期由 MBVR 做物理删除;MRA 用于为预留自动创建存储地点库存数据。
MVT 勾不勾是个取舍。默认勾选省操作,但会让预留一建出来就可发货,仓库可能提前把料发掉;不默认勾选,临近发货再勾,控制更稳,但需要操作员记得勾。我一般建议生产类预留不默认勾 M,成本中心或转储类看管理粒度决定。前台也有移动开关:编辑-附加功能-用于所有项目-移动开关,可以多行项目统一勾选或取消 M。
| 参数 | 含义 | 常见设置 | 注意点 |
|---|---|---|---|
| MVT | 前台 M 标志默认勾选 | 按业务决定 | 默认勾选会降低发货门槛 |
| 天数 M | 允许提前发货的工作日 | 10 天 | 不是自然日,排程要看工作日 |
| 保持 | 预留保留天数 | 30 天 | 超期由 MBVR 删除,不是自动发生 |
| MRA | 自动创建存储地点库存数据 | 按仓库管理需要 | 别和预留可用性检查混为一谈 |
注意:后台配了 30 天保持期不等于系统会自动清理。没人跑 MBVR,超期预留会一直躺在表里。
2.3 工厂级参数与动态可用性检查:02 和 03 规则怎么落到 MB21
工厂级参数在后台物料管理-库存管理和实际库存-工厂参数里维护。和预留相关的开关不要多个工厂一把改,先挑一个工厂验证。动态可用性检查在 SPRO-物料管理-库存管理和实际库存-预留-设置动态可用性检查里配,规则 02 和 03 会决定 MB21/MB22 的可用性检查行为。物料主档 MRP3 里的可用性检查组也要对上,否则前台会表现成“有时检查、有时不检查”的玄学。
动态可用性检查不是只看当前库存,它按需求日期滚动算可用量。也就是说,同一物料今天够,不代表下个月的需求日期也够;反过来,今天不够,换个日期可能就能保存。配置时先把物料主档的可用性检查组设好,再到动态检查里看 02/03 规则是否覆盖 MB21/MB22。验证步骤建议这样:
- 选一个测试物料,在 MRP3 里维护可用性检查组。
- 在动态可用性检查里确认 02/03 规则与检查组匹配。
- 用 MMBE 看当前库存,用 MB25 看同物料已有预留。
- MB21 建一条接近可用上限的预留,保存看是否报错。
- 改需求日期或数量再保存,确认检查按日期滚动。
| 对象 | 配置位置 | 影响 |
|---|---|---|
| 工厂参数 | 后台工厂参数 | 工厂级预留行为 |
| 动态可用性检查 | 预留-设置动态可用性检查 | MB21/MB22 保存校验 |
| 物料主档 MRP3 | 可用性检查组 | 决定物料走哪套检查 |
| 规则 02/03 | 动态检查配置 | 控制检查范围和事务 |
注意:只改后台不改物料主档,会出现部分物料检查、部分物料不检查。上线前按物料类型抽样跑一遍。
2.4 配置验证:用一条预留把后台参数跑通
配置完不要直接等业务来用,自己建一条测试预留把链路跑通。先 MB21 选成本中心投料场景,移动类型 201,数量控制在可用库存以内,观察 M 是否按 MVT 默认勾选;保存后记 RSNUM,用 MB23 查头行,用 MMBE 看库存是否被预留占用;再用 MB22 改数量,看可用性检查是否触发;最后用 MBVR 测试运行,观察 30 天保持期和 10 天移动窗口有没有按预期命中。
通过标准不是“能保存”这么简单,而是:编号连续、M 默认符合预期、超量保存会报错、改日期后报错消失、MBVR 测试日志能看到超期和临近发货两类记录。测试客户端跑完再传生产,别拿生产号段做实验。
3. 手动创建 SAP 生产预留 MB21:从成本中心投料到 M 标志勾选
MB21 是这份操作指引里最常用的入口。它适合新品研发暂时没法对工单发料、又想把消耗纳入系统控制的场景,也适合转储、成本中心投料。手动预留建完不是结束,后面还有 MB23 查编号、MB25 按物料查、MMBE 看库存、MIGO 发货,任何一个环节脱节都会让预留变成黑匣子。
3.1 MB21 的适用场景:别拿预留替代采购申请
新品研发阶段没有生产工单,但研发领料要进系统,常见做法是建成本中心预留,移动类型用 201;生产投料用 261;研发专用移动类型原文给的是 Y10,具体以公司自定义为准。转储场景也可以用预留先把需求挂住,等实际转储时再发货。预留会被 MRP 考虑,所以它不是一张孤立的查询单,而是需求池的一部分。
但预留不能替代采购申请。预留只表示“这个物料在某个日期有需求”,不自动变成采购订单;库存不够时,是否允许建预留取决于可用性检查配置。把预留当采购申请用,会出现需求一大堆、采购没动作、MRP 跑完还是缺料的情况。
3.2 逐字段操作:预留类型、移动类型 201/261/Y10、需求日期和数量
MB21 的菜单路径是后勤>物料管理>库存管理>预留>MB21-创建。进去后先填预留类型、工厂、需求日期,再逐行填物料、数量、移动类型和接收对象。成本中心投料填成本中心,生产投料填订单,研发按 Y10 的接收对象填。数量不要拍脑袋,先 MMBE 看可用,再 MB25 看同物料已占多少。
| 字段 | 填法 | 说明 |
|---|---|---|
| 预留类型 | 按业务选择 | 影响编号和字段布局 |
| 工厂 | 实际需求工厂 | 跨工厂需求要分开建 |
| 需求日期 | 实际要货日期 | 影响动态可用性检查 |
| 物料 | 需要出库的料号 | 先确认物料主档可用性检查组 |
| 数量 | 不超过可用库存 | 超量会被检查拦下 |
| 移动类型 | 201/261/Y10 | 决定后续发货和成本归集 |
| 接收对象 | 成本中心/订单/研发对象 | 不能空,否则发料无归属 |
| M 标志 | 临近发货再勾 | 不勾不可发货 |
保存后系统给出 RSNUM,马上用 MB23 查一遍,确认行项目、数量、移动类型和 M 状态都对。不要等仓库来问才回头查。
3.3 M 标志与移动开关:什么时候勾、为什么不能一直勾
M 标志控制这条预留能不能发货。勾上就可以随时发货,即使需求日期在一个月以后;不勾就不可用。原文的建议是临近才勾,这个习惯能避免仓库提前把料发走。后台 MVT 决定新建时默认勾不勾,前台移动开关可以多行统一勾选或取消。
实际操作里最容易翻车的是“以为建了预留就能发”。仓库在 MIGO 里选不到预留,十有八九是 M 没勾。另一个坑是批量勾选后没保存,或者移动开关只对当前行生效。批量处理可以用 MBVR 自动勾临近 10 天的预留,但前提是 JOB 真的在跑。
注意:M 不是审批标志,它只控制发货可用性。审批流要另外做,别把 M 当成放行章。
3.4 查询三件套:MB23、MB25、MMBE 各看什么
MB23 按预留编号查,适合拿到 RSNUM 后看头行、已发数量、M 状态;MB25 按物料查,适合月底盘点看这个料被哪些预留占了;MMBE 看库存总览,适合判断可用量够不够。三个事务码交叉看,才能确认“预留数量、已发数量、库存可用”三者对得上。
| 事务码 | 输入 | 输出 | 场景 |
|---|---|---|---|
| MB23 | 预留编号 | 预留头行、已发数量 | 单条预留追踪 |
| MB25 | 物料、工厂 | 该物料所有预留 | 月底按料对账 |
| MMBE | 物料、工厂 | 库存、预留占用 | 判断可用量 |
| MB22 | 预留编号 | 修改手工预留 | 自动预留通常改不了 |
MB22 能改手工预留,但自动生成的预留一般不能改。改之前先 MB23 看来源,别在 MB22 里硬改,改不动还以为是权限问题。
3.5 发货闭环:MIGO 过账后回头查已发数量
预留建完,仓库用 MIGO 选预留发货,移动类型按 201/261/Y10 走。过账后回 MB23 看已发数量,再 MMBE 看库存减少。部分发货时,预留数量不变,已发数量累加,未发数量就是差额。月底对账重点看 M 已勾但长期未发的预留,以及已发数量超过需求数量的异常。
如果 MIGO 报错,先查 M 有没有勾、移动类型和预留行是否一致、接收对象是否有效,再查库存和期间。不要一上来就改预留数量,先把发货链路看清楚。
4. 批量与自动预留:MBBR、MBVR 定时任务和 OPL8 工单控制
手工一条条建预留只适合少量场景,量一上来就要靠 MBBR 批量创建、MBVR 批量处理、OPL8 工单自动预留。这三块配不好,会出现“预留建了一堆没人发”“超期预留删不掉”“生产订单下达了却没有预留”的连锁问题。自动预留尤其要搞清楚:它和承诺量不是一回事。
4.1 MBBR 批量创建:模板决定下限,日志决定成败
MBBR 适合大量成本中心投料或转储预留。常见做法是先 MB21 建一条标准预留当模板,把预留类型、工厂、移动类型、接收对象规则定好,再进 MBBR 批量维护行项目。执行前先模拟,执行后看日志,最后 MB23 抽查几条,别一口气跑完就当成功。
| 批量字段 | 注意点 |
|---|---|
| 模板预留 | 移动类型和接收对象要固定 |
| 物料/数量 | 先导出校验,避免空行 |
| 需求日期 | 影响可用性检查 |
| 工厂 | 跨工厂要拆批次 |
| 日志 | 失败行要逐条看原因 |
注意:MBBR 不绕过可用性检查。批量跑失败,先看库存和动态检查,不要反复重跑。
4.2 MBVR 不是自动清道夫:30 天保持期和 10 天移动窗口要靠 JOB
MBVR 用来清理超期预留、批量勾选 M,但系统不会自动帮你跑。原文的解释很关键:后台配了允许移动天数 10、保持期间 30 天后,以基准日期为准,基准日期减过去需求日期大于 30 天,MBVR 运行时会对 30 天以外的预留做删除;将来需求日期减基准日期小于 10 天,MBVR 运行时会自动勾选允许移动。注意删除是数据库层面的物理删除,跑之前先测试运行。
常见做法是后台设两个 JOB,一个处理前 30 天超期,一个处理后 10 天内临近发货,每天各跑一次。JOB 用 SM36 建,程序选 MBVR,变式里带好工厂、基准日期和测试/正式标志。跑完用 SM37 看日志,别只看 JOB 状态是绿色。
| JOB | 处理对象 | 动作 | 频率 |
|---|---|---|---|
| 超期清理 | 基准日期-需求日期>30 | 删除超期预留 | 每天 |
| 临近勾选 | 需求日期-基准日期<10 | 自动勾 M | 每天 |
注意:MBVR 删除不可逆。第一次上线先在测试客户端跑模拟,确认变式和基准日期没有偏移。
4.3 OPL8 订单类型参数:从不、下达后、立即三种自动预留策略
OPL8 路径在 SPRO-生产-生产线控制-主数据-订单-定义订单类型的相关参数。这里控制生产订单是否自动生成预留,常见三档是“从不”“下达后”“立即”。选从不,生产订单不会自动建预留,要靠 MB21 手工补;选下达后,订单状态变成 REL 才生成预留;选立即,订单创建时就生成。三档没有绝对好坏,看管理粒度。
| 策略 | 触发时点 | 适用场景 | 风险 |
|---|---|---|---|
| 从不 | 不自动生成 | 手工控制强的场景 | 容易漏建 |
| 下达后 | 状态 REL 后 | 常规生产 | 未下达就没有预留 |
| 立即 | 创建即生成 | 急需锁定需求 | 订单变更后预留处理麻烦 |
配置改完用 CO01 建测试订单,CO03 看组件和状态,再用 MB23 查自动预留。不要在生产订单类型上直接试,先复制一个测试订单类型。
4.4 工单自动预留的连锁反应:MB22 不能改、MB21 不能再建、MIGO 仍可发
自动预留生成后,常见的连锁反应是:MB22 改不了,因为系统认为它由订单控制;MB21 不能再手工建同物料同需求的预留,会报重复;但 MIGO 仍然可以发货。要调整数量或日期,正确路径是改生产订单组件或取消订单预留后重下,不是去底表硬改。
原文还提到承诺量与预留不一样。承诺量是 ATP 层面的可用性承诺,预留是需求凭证。拿预留当承诺量看,会误判可接单能力;拿承诺量当预留看,会漏掉仓库备料依据。
4.5 自动预留和承诺量的边界:MRP 看预留,销售看承诺
MRP 会把预留当需求考虑,所以预留建多了会推高需求;承诺量更多影响销售接单和 ATP 检查。两边口径要分开对账:MB23/MB25 看预留,ATP 相关报表看承诺。月底如果发现“库存够但发不出”,先查预留占用和 M 标志;如果发现“能接单但生产缺料”,先查 MRP 需求和生产订单组件。
5. 生产预留常见问题排查:MB21 报错、M 勾不上、预留删不掉
这一章按现象、原因、解决三段式写,都是上线后高频踩坑。排查顺序建议从主数据到后台配置再到 JOB,别一上来就改代码或删表。
5.1 现象:MB21 保存提示可用性检查失败
现象是数量明明小于 MMBE 看到的库存,MB21 还是保存不了。原因通常是物料 MRP3 的可用性检查组和动态检查规则 02/03 已经生效,需求日期落在检查区间,而可用库存被其他预留、订单组件或库存冻结占掉了。解决先 MMBE 看非限制库存,再 MB25 看同物料所有预留的未发数量,然后调需求日期或数量;如果业务确实要超可用,走审批或先补库存,不要直接改检查规则绕过去。
5.2 现象:M 标志灰色、勾不上,或批量勾选后不生效
现象是行项目 M 勾选灰掉,或者前台移动开关勾了保存后又变回去。原因常见有三类:后台缺省值 MVT 没勾导致默认不可编辑;预留是自动生成的,M 由订单控制;用户权限或状态限制。解决先看 MB23 的预留来源,自动预留去 OPL8 和订单侧处理;手工预留用编辑-附加功能-用于所有项目-移动开关批量勾,再检查后台缺省值和权限。不要反复点,先确认来源。
5.3 现象:MBVR 跑了但超期预留还在
现象是 SM37 看 JOB 绿色,MB23 查超期预留仍然存在。原因可能是 JOB 没带对变式、基准日期偏移、保持期没配到目标工厂、只跑了测试运行没跑正式,或者预留还有未清数量不满足删除条件。解决先 SM37 看日志里的删除条数和拒绝原因,再 MBVR 测试运行对照;检查后台保持 30 天和天数 10 是否落到工厂,最后确认两个 JOB 都在跑。物理删除前一定先模拟。
5.4 现象:生产订单已下达却没有自动预留
现象是 CO03 状态已经是 REL,MB23 查不到对应预留。原因常见是 OPL8 订单类型设成了“从不”,或者虽然设了“下达后”但组件没有展开、物料不参与预留、工厂参数不匹配。解决先 CO03 看组件和状态,再 OPL8 看订单类型参数,必要时重新展开组件;如果订单类型改过,用新订单测试,不要拿老订单反复试。
5.5 现象:自动预留生成后 MB21 报重复、MB22 改不了
现象是手工 MB21 保存提示已存在预留,MB22 进去字段灰掉。原因是系统已经按订单自动创建预留,禁止重复手工创建;自动预留的数量和日期由订单组件控制,MB22 不允许改。解决用 MB23 查自动预留,正常发货走 MIGO;要调整就改生产订单组件或取消订单预留后重下。不要为了改数量去删 RKPF/RESB,底表一动,订单和库存全对不上。
6. 用 RKPF/RESB 做预留对账:一条查底表加验证的进阶路径
MB23 适合单条查,月底按工厂、物料、日期对账时,底表更快。预留凭证头在 RKPF,行项目在 RESB,RSNUM 关联头和行。下面这段 ABAP Open SQL 按工厂、物料区间和凭证日期查头行,重点看 BDMNG 需求数量和 ENMNG 已发数量,差额就是未发。字段名以 SE11 为准,不同系统可能有增强字段。
" 按工厂、物料和凭证日期区间查预留头行,字段名以 SE11 为准 SELECT rkpf~rsnum, rkpf~werks, rkpf~budat, resb~rspos, resb~matnr, resb~bdmng, resb~enmng FROM rkpf INNER JOIN resb ON resb~rsnum = rkpf~rsnum INTO TABLE @DATA(lt_resb) WHERE rkpf~werks = @p_werks AND resb~matnr IN @s_matnr AND rkpf~budat GE @p_date_from AND rkpf~budat LE @p_date_to.逻辑很直接:RKPF 是凭证头,RESB 是行项目,RSNUM 关联;BDMNG 是需求数量,ENMNG 是已发数量;p_werks 是工厂,s_matnr 是物料区间,p_date_from/to 是日期范围。跑出来先按物料汇总 BDMNG 和 ENMNG,再和 MMBE 库存、MB25 预留清单三方对。差额大且 M 已勾很久的,优先查是不是漏发货;差额为负的,查是不是重复发货或单位换算问题。
我以前只盯 MB23 单条看,觉得对上了就完事,后来月底对账发现同一物料十几条预留,手工翻到眼花。从那以后每次上线预留相关配置,我都强制走一遍“测试客户端建预留、MBVR 模拟、RKPF/RESB 汇总对账”这三步,再让业务签字。需要原文档里后台截图和菜单路径对照的,直接拿《SAP-生产预留-操作.docx》按章节翻一遍就行,希望帮到你。
本文还有配套的精品资源,点击获取