SAP生产预留配置与操作全链路:OMC2、OPL8、MB21、MBVR及底表解析
简介这份SAP生产预留操作指引文档面向SAP MM/PP模块顾问、生产计划员及仓储管理人员聚焦生产过程中原材料、半成品与成品的预留管理帮助解决预留创建、查询与可用性检查等日常操作问题。资源包内含1个docx文件大小约836KB内容以图文步骤与事务码说明为主便于按章节查阅。文档系统梳理了预留背景、OMC2预留编码、缺省值与工厂级参数配置、预留可用性检查并逐一讲解MB21手动创建、MB23按编号查询、MB25按物料查询、MBBR批量创建、MBVR批量处理及生产自动预留等操作还涉及OPL8控制、工单自动预留、预留底表与预留数不超过库存数等进阶要点。目前已有695人学习适合需要快速上手或查漏补缺的SAP用户参考。1. 生产预留不是“锁库存”一份 14 页操作指引拆出来的配置链路很多做 SAP MM 或 PP 的朋友第一次接触生产预留都会把它理解成“把库存锁住不让别人用”。真到项目上你会发现预留Reservation锁的不是库存数量而是“需求凭证”——它告诉系统某个工单、某个成本中心、某个研发项目在未来某个时间点需要多少某个物料。库存该被 MRP 算进去还是算进去该被发货还是能发货取决于预留里的“允许移动”标记和可用性检查规则。这份《SAP-生产预留-操作.docx》一共 14 页从预留背景一路写到 RKPF/RESB 底表把 OMC2 号码段、OPL8 订单类型控制、MB21/MB23/MB25/MBBR/MBVR 这一整条链路串了起来。它适合两类人一是刚接手 SAP 后勤模块、需要照着事务码把预留跑通的顾问或关键用户二是被“预留超期不清理、工单自动预留改不了、库存不够还能建预留”这些问题折腾过的运维。下面我按自己复现这份文档的顺序把配置、操作和踩坑点拆开讲。2. 预留的底层逻辑与后台配置OMC2、OPL8 和动态可用性检查在动手敲 MB21 之前得先把后台三件事理清楚预留号码从哪来、订单类型要不要自动产生预留、可用性检查按哪条规则走。这三件事没配好前台操作要么报错要么产生一堆你查不到来源的预留。2.1 预留编码 OMC2号码段决定预留凭证的“身份证”OMC2 是预留的号码分配配置路径在 SPRO-物料管理-库存管理和实际库存-号码分配-为预留定义号码分配。它决定的是当你创建预留时系统自动给这个预留分配一个编号编号是内部给号还是外部给号、号段区间是多少。常见做法是给预留单独分配一个内部号段比如从 00000001 到 00999999避免和物料凭证、采购订单的号段混在一起。如果你在项目里看到预留号是乱序的、或者跟别的凭证号撞了第一反应就是去 OMC2 看号段是不是被多个凭证类型共用。配置步骤大致是进入 OMC2选中“预留”对应的号码范围对象。点“间隔”按钮维护号段区间比如 01 区间 00000001-00999999。确认号段状态是“已分配”没有未分配的号段残留。提示号段一旦被使用过不要随意删除或改区间否则历史预留会查不到或号码冲突。2.2 缺省值与工厂级参数MVT、天数 M、保持期和 MRA缺省值这块文档里提到两个入口一个是 SPRO-物料管理-库存管理和实际库存-预留另一个是前台菜单“编辑-附加功能-用于所有项目-移动开关”。核心是控制前台创建预留时行项目里的“M”允许移动是否默认勾选。MVT 勾选后前台新建预留时 M 默认全部勾选。但实际业务里很多公司不希望一建预留就允许发货而是临近需求日期才勾。所以更常见的做法是不在后台默认勾选而是让用户在前台按行手动勾或者用 MBVR 批量勾。工厂级参数配置在“后台-物料管理-库存管理和实际库存-工厂参数”里几个关键字段字段含义典型设置天数 M允许提前发货的天数工作日10 天保持预留保留天数超期物理删除30 天MRA为预留自动创建存储地点库存数据按需勾选MVT控制前台 M 是否默认勾选按业务决定这里的“天数 M”和“保持”是后面 MBVR 自动清理和自动勾选的基准。文档里写得很直白基准日期减去过去的需求日期大于 30 天MBVR 运行时就会删除 30 天以外的预留将来的需求日期减去基准日期小于 10 天MBVR 就会自动勾选“允许的移动”。这两个参数配错要么预留被提前删掉要么该发货的预留一直勾不上。2.3 动态可用性检查02 和 03 规则决定 MB21/MB22 能不能过可用性检查的配置路径是 SPRO-物料管理-库存管理和实际库存-预留-设置动态可用性检查。文档里强调这个规则由物料主档 MRP3 中的可用性检查和后台动态可用性检查下的事务代码两个规则共同决定02 和 03 决定了 MB21/MB22 的可用性检查规则。我一般会这样理解物料主档 MRP3 里给物料指定一个可用性检查规则比如 02后台再给这个规则绑定具体的检查逻辑比如是否检查库存、是否检查已预留数量。如果两边对不上MB21 保存时就会报“可用性检查失败”或者干脆不检查。复现时建议按这个顺序验证用 MM03 查看物料 MRP3 视图记下“可用性检查”字段的值。进后台“设置动态可用性检查”找到对应规则确认检查范围。用 MB21 建一条预留故意把数量设成超过可用库存看系统是否按预期报错。注意文档里 2.11 节提到“预留数不超过库存数”的场景A 库存不够时可以创建预留B 库存不足时不能创建预留。这个差异就是可用性检查规则和物料主档设置共同作用的结果不是系统 bug。2.4 OPL8订单类型控制是否自动产生预留生产订单自动预留的开关在 OPL8路径是 SPRO-生产-生产线控制-主数据-订单-定义订单类型的相关参数。文档里给了三个选项从不、下达后、立即。“从不”生产订单不产生预留物料需求靠其他方式控制。“下达后”订单状态变成 REL 才能生成预留。“立即”订单一创建就生成预留。这个配置直接决定 CO03 里能不能看到 BOM 对应的预留也决定 MB23 能不能查到自动创建的预留。常见坑是业务反馈“工单发了料但 MB23 查不到预留”结果一查 OPL8 设的是“从不”。另一个坑是设成“立即”后订单还没审核就占了预留后面改单容易乱。自动产生的预留无法用 MB22 修改但可以 MIGO 发货。这一点文档里写得很清楚也是很多新手容易翻车的地方——看到自动预留数量不对第一反应是 MB22 去改结果系统不让改。3. 前台操作全链路MB21 建预留、MB23/MB25 查预留、MBBR/MBVR 批量处理后台配好之后前台操作就是一条流水线手动建、按号查、按物料查、批量建、批量清理。每个事务码都有它适合的场景混用会给自己挖坑。3.1 MB21 手动创建预留成本中心 201、生产 261、研发 Y10MB21 的菜单路径是“后勤物料管理库存管理预留MB21 - 创建”。文档里给的业务场景很典型新品研发无法对工单实施发料又想把这种消耗纳入 SAP 系统做全局控制申请后创建成本中心预留适用于转储、成本中心投料。操作时几个关键字段物料、工厂、需求日期、数量按实际需求填。移动类型成本中心用 201生产用 261研发用 Y10。M 标记勾选后就可以随时发货即使一个月以后发货不勾选则不可用。一般临近需求日期才勾。我一般会提醒用户MB21 建完不是就完事了一定要用 MMBE 看预留后的库存视图确认可用量变化符合预期。文档里也提到“创建预留 MB21查看预留 MMBE”。# MB21 前台操作无法用脚本替代这里用事务码序列说明操作顺序 # 1. 输入事务码 MB21 # 2. 输入物料、工厂、需求日期、数量 # 3. 选择移动类型201成本中心/ 261生产/ Y10研发 # 4. 按需勾选行项目的 M 标记 # 5. 保存系统生成预留号 # 6. 用 MMBE 查看库存和预留后的可用量这段不是代码是操作序列。重点是第 4 步的 M 标记和第 6 步的验证。很多人建完预留不验证等到发货时才发现可用量不对回头查很费时间。3.2 MB23 与 MB25按预留号和按物料查预留MB23 是按预留编号查预留MB25 是按物料查预留。这两个事务码在排查问题时用得最多。MB23知道预留号直接查这条预留的详细信息包括状态、数量、需求日期、M 标记。MB25知道物料查这个物料下所有预留适合排查“某个物料为什么可用量这么低”。文档里 2.9.2 节提到“MB23 查询系统自动创建预留”以及“MB21 已自动创建预留后无法再手工创建预留”。这意味着如果你用 MB25 查到某物料已有自动预留再想用 MB21 手工补一条系统可能会阻止或产生重复需求。常见做法是先用 MB25 确认没有重复预留再决定是否手工创建。3.3 MBBR 批量创建预留适合重复性需求场景MBBR 是批量创建预留的事务码。文档里只给了名字没展开操作。按这个资源场景下合格从业者最可能用的方案MBBR 一般用于多个物料、多个成本中心、相同或相似需求日期的重复性预留创建。操作逻辑是先准备好批量输入的数据物料、工厂、数量、需求日期、移动类型用 MBBR 一次性生成多条预留。适合月度研发投料、多成本中心分摊这类场景。提示批量创建前先用 MB25 查一遍目标物料是否已有预留避免重复建导致需求翻倍。3.4 MBVR 批量处理预留清理超期和自动勾选 MMBVR 是这份文档里最值得细看的一节。文档里写得很清楚MBVR 用来清理超期预留、批量勾选 M但如果没人操作后台设置就不起作用系统不会自动清除超期预留。它的运行逻辑是基准日期 - 过去的需求日期 30 天删除 30 天以外的预留删除数据库内的 30 天外预留。将来的需求日期 - 基准日期 10 天自动勾选“允许的移动”。文档里的总结是一般都是在后台设置两个 JOB一个前 30 天的一个后 10 天内的每天分别跑一次让其自动处理预留。# MBVR 后台 JOB 配置思路事务码 SM36 # JOB1清理超期预留 # 程序RM06BVR0 或对应清理程序 # 变式基准日期 当前日期保持期 30 天 # 频率每天一次 # JOB2自动勾选临近需求预留的 M 标记 # 程序RM06BVR0 或对应勾选程序 # 变式基准日期 当前日期天数 M 10 天 # 频率每天一次这里的关键参数是“保持期 30 天”和“天数 M 10 天”它们必须和 2.2 节工厂级参数里的设置一致。如果后台工厂参数改了但 JOB 变式没改清理和勾选就会错位。我见过最典型的翻车是工厂参数保持期改成 60 天但 JOB 还是按 30 天跑结果 30 到 60 天之间的预留被误删业务那边直接炸锅。4. 避坑与排查预留超期不清理、自动预留改不了、库存不够还能建这一章按“现象 → 原因 → 解决”写几条我实际遇到过的坑都是这份文档里提到或能推导出来的场景。4.1 现象预留超期了但系统没删底表里越积越多原因MBVR 不会自动运行后台配置的“保持 30 天”只是参数必须有人或 JOB 去跑 MBVR 才会执行删除。文档里原话是“如果没人操作后台的设置也就不不起作用了系统不会自动清除超期的预留”。解决用 SM36 建两个日常 JOB分别跑清理和勾选每天一次。建完用 SM37 查 JOB 日志确认执行成功。如果 JOB 失败先看变式里的基准日期是不是写死了写死会导致每天跑的结果一样。4.2 现象生产订单自动产生的预留用 MB22 改不了原因文档 2.9.1 节明确写了“自动产生的预留无法修改 MB22但可以 MIGO 发货”。自动预留的来源是生产订单改预留等于改订单需求系统不允许直接改。解决如果数量不对回到生产订单去改组件数量或订单数量让系统重新生成预留。如果只是发货直接用 MIGO 按预留发货。不要试图用 MB22 硬改改不了还浪费时间。4.3 现象库存不够时还能创建预留或者库存够却建不了原因文档 2.11 节给了两种情况A 库存不够时可以创建预留B 库存不足时不能创建预留。差异来自可用性检查规则和物料主档 MRP3 的设置。创建 1000 个可以、1001 个不可以是因为库存总数 1001、已预留 2 个可用 999预留数不能超过 999。解决先查物料 MRP3 的可用性检查规则再查后台动态可用性检查的 02/03 规则。如果业务希望“库存不够也能建预留”就把检查规则调松如果希望“严格控制”就调紧。不要两边都改改一边验证一边。4.4 现象MB21 建预留时提示“已自动创建预留无法再手工创建”原因文档 2.9.2 节提到“MB21 已自动创建预留后无法再手工创建预留”。同一物料、同一需求日期、同一工厂下系统可能已经通过生产订单自动产生了预留再手工建就会冲突。解决先用 MB25 按物料查一遍已有预留确认是否真的重复。如果是重复需求改生产订单如果是不同需求调整需求日期或移动类型再建。4.5 现象MBVR 跑完该勾的 M 没勾上不该删的删了原因工厂级参数里的“天数 M”和“保持”与 MBVR 变式里的参数不一致或者基准日期取错。文档里明确基准日期 - 过去的需求日期 30 天删除将来的需求日期 - 基准日期 10 天勾选。解决每次改工厂参数后同步检查 SM36 里两个 JOB 的变式。跑之前先用 MBVR 前台模拟一次看清单再决定是否后台执行。删除操作没有后悔药建议先跑勾选 JOB确认无误再跑清理 JOB。5. 底表 RKPF/RESB 与预留数控制从 MB23 查到数据库的验证习惯文档最后两节给了底表信息和预留数不超过库存数的逻辑这两块是进阶排查的入口。前台事务码查不到原因时直接看底表往往最快。5.1 RKPF 和 RESB预留的凭证头和行项目文档 2.10 节写得很简洁RKPF 是凭证头RESB 是行项目。这两个表是预留的底表。RKPF存预留的头部信息比如预留号、创建日期、创建人、工厂、移动类型等。RESB存预留的行项目信息比如物料、数量、需求日期、M 标记、预留状态等。常见用法是用 SE16N 查 RESB按物料或预留号筛选看行项目的具体字段。比如 MB23 显示 M 标记没勾但业务说勾了就去 RESB 看对应字段的实际值。再比如预留被删了但业务说没删去 RKPF 看头部是否还存在。-- 按预留号查预留头 SELECT * FROM RKPF WHERE RSNUM 预留号; -- 按物料查预留行项目 SELECT * FROM RESB WHERE MATNR 物料号 AND WERKS 工厂; -- 查超期未清理的预留示例按实际字段调整 SELECT * FROM RESB WHERE BDMNG 0 AND BDTER ADD_DAYS(CURRENT_DATE, -30);上面 SQL 只是示意字段实际表结构以系统为准。重点是养成习惯前台查不到或对不上时用 SE16N 查 RKPF/RESB比反复问业务快得多。5.2 预留数不超过库存数的验证方法文档 2.11 节的逻辑是库存总数 1001已预留 2 个可用 999预留数不能超过 999。这个控制不是靠某个开关而是靠可用性检查规则和物料主档设置共同实现的。验证方法用 MMBE 查物料当前库存和已预留数量算出可用量。用 MB21 建一条预留数量设为可用量 1看系统是否报错。如果没报错去查物料 MRP3 的可用性检查规则和后台动态可用性检查设置。调整规则后重复第 2 步直到行为符合业务预期。注意这个控制是“创建时检查”不是“持续锁定”。预留创建后库存被其他凭证消耗可用量可能变成负数这是另一个话题需要靠 MRP 和发货策略控制。5.3 我自己的验证习惯从那以后我每次接手预留相关的配置或问题都强制走一遍“OMC2 看号段 → OPL8 看订单类型 → 工厂参数看天数和保持期 → MB25 查已有预留 → MB21 建测试预留 → MBVR 模拟跑一次 → SE16N 查 RKPF/RESB 对账”。这套流程走完基本能覆盖 90% 的预留问题。剩下的 10% 多半是权限或增强出口那就得单独查了。希望帮到你。本文还有配套的精品资源点击获取