SAP生产预留全链路:MB21配置、MBVR清理与OPL8自动预留
简介一份围绕 SAP 生产预留实操编写的 Word 文档面向生产计划、物料管理及 SAP 关键用户帮助读者梳理预留从背景概念到配置、创建、查询与批量处理的完整流程。包内仅含 1 个 docx 文件压缩包约 836KB目录按预留编码 OMC2、缺省值与工厂级参数配置、可用性检查、MB21 手动创建、MB23 按编号查询、MB25 按物料查询、MBBR 批量创建、MBVR 批量处理及生产自动预留等模块展开便于按主题查阅。文档还涉及 OPL8 生产订单预留控制、工单自动预留、预留底表和预留数不超过库存数等细节适合作为日常操作参考与配置排查手册。目前已有 697 人学习内容结构清晰能帮助读者快速定位事务码与关键参数减少预留创建和可用性检查中的试错成本。1. 生产预留到底在管什么从一张「研发领料单」说起新品研发阶段最容易出现一种尴尬工单还没建物料已经被研发组领走了仓库账上看着有库存生产计划一查可用量却发现对不上。SAP 里的生产预留就是解决这类问题的在需求真正发生之前先在系统里把物料、数量、需求日期「占住」让 MRP 把它当成真实需求参与运算出库时能及时拿到货。这份操作指引覆盖的是很实操的一条链路预留号码段与缺省值配置、动态可用性检查、MB21 手工建预留、MB23/MB25 两个查询入口、MBBR 批量建、MBVR 批量处理以及生产订单自动预留的开关逻辑。适合已经能进 SAP 前台、但被「预留勾不上 M」「超期预留清不掉」「自动预留改不了」折腾过的 MM/PP 顾问和关键用户也适合刚接手库存管理模块、需要把后台配置和前台动作对应起来的新手。2. 后台先把地基打好号码段、缺省值与可用性检查很多人一上来就冲 MB21 建单建完发现移动类型默认没勾、预留号跳号跳得莫名其妙、明明有库存却提示可用性不足。这些问题九成不在前台而在后台三处配置OMC2 号码段、预留缺省值、动态可用性检查。先把这三块对齐前台才不会反复翻车。2.1 OMC2 定义预留号码段编号从哪来路径是 SPRO → 物料管理 → 库存管理和实际库存 → 号码分配 → 为预留定义号码分配。这里维护的是预留凭证的编号范围编号是系统自动带出的不是手工敲的所以「预留号不连续」属于正常现象——只要不是跨年度错乱就不必当成 bug 追。号码段一般分内部给号和外部给号两类。内部给号由系统按序发放适合绝大多数生产场景外部给号允许业务自己输编号通常只在从旧系统迁移、或有外部单据号要对齐时用。我的习惯是除非有明确的对账需求一律走内部给号外部给号一旦被人重复使用报错信息很不友好排查成本高。配置时容易忽略的是号码段区间要和业务量匹配。区间上限设小了跑到头会直接卡住建单而且这个报错在 MB21 界面上不一定显眼往往要回头看状态栏。区间也别开得太随意几千个号配给一个高频工厂几天就打满了。改号码段属于跨客户端传输的配置改完记得走请求传输别在两个客户端各改一遍否则后续对账时两边号码逻辑不一致属于典型的血泪经验。2.2 预留缺省值M 勾不勾、天数怎么算路径是 SPRO → 物料管理 → 库存管理和实际库存 → 预留。这里几个字段直接决定前台行为配置项含义常见取值与影响MVT / 移动开关控制前台行项目「M」是否默认勾选勾上则新建预留默认允许发货天数允许提前发货的工作日数设为 10表示可提前 10 个工作日发货保持期间预留保留天数超期可被清理设为 30配合 MBVR 删除超期预留MRA自动创建存储地点库存数据影响预留是否直接带出库存地点MVT 这个开关有个前台等价入口编辑 → 附加功能 → 用于所有项目 → 移动开关可以批量控制多行项目的 M 勾选状态。这里最容易踩的认知误区是——M 不是「已发货」标记而是「允许移动」标记。勾上意味着这张预留现在可以被参照发货哪怕实际发货在一个月后。所以业务上的正确姿势是临近发货才勾而不是建单就勾。如果 MVT 在后台默认勾选前台新建的预留会全部处于「可发货」状态MRP 一算就可能把还没到期的需求提前拉进来造成计划端看到一堆「立刻要出库」的假信号。我一般建议生产类预留默认不勾由计划员按排产节奏逐批放开。2.3 工厂级参数与动态可用性检查工厂级参数在后台 → 物料管理 → 库存管理和实际库存 → 工厂参数。这里影响的是工厂维度的库存与预留行为基线和公司代码层的设置要配套看两边不一致时前台表现会很玄学。动态可用性检查在SPRO → 物料管理 → 库存管理和实际库存 → 预留 → 设置动态可用性检查。规则最终由两个地方共同决定物料主档 MRP3 视图里的「可用性检查」组加上这里配置的事务码规则。指引里明确写了02 和 03 这两个事务码决定了 MB21 / MB22 的可用性检查规则这是排查「为什么建预留时没做检查、改预留时却报错」的关键线索。实际操作里常见的现象同一物料MB21 建预留畅通无阻MB22 一改数量就提示可用性不足。原因往往不是库存变了而是 MB21 和 MB22 绑定的事务码规则不同一个走了检查、一个没走。遇到这类不一致先去看这两个事务码对应的检查规则而不是急着怀疑库存数据。3. 前台手工建预留MB21 的四个关键字段与查询入口后台配好之后前台动作其实不多但每一个字段填错都会在后续 MRP 或发货环节放大。这一章把 MB21 的填单逻辑、MBBR 批量建、MB23/MB25 两个查询入口串起来讲清楚「建完之后怎么验证、怎么找」。3.1 MB21 建预留业务场景与必填项菜单路径后勤 → 物料管理 → 库存管理 → 预留 → MB21 - 创建。典型业务场景是新品研发无法对工单发料但又要把这种消耗纳入系统做全局控制走申请后创建成本中心预留也适用于转储、成本中心投料这类没有生产订单承载的需求。移动类型按需求选择成本中心投料一般用 201生产领料用 261研发类常见 Y10 这类自定义移动类型。移动类型决定了后续发货过账的科目走向选错了不是改一个字段的事往往要冲销重来。填单时的关键字段物料 工厂决定可用量从哪个库存地点池子里算。需求日期MRP 参与运算的基准也是 MBVR 判断超期与否的依据。数量受可用性检查约束不能超过可用库存。移动类型与 M 标记决定这张预留当前能不能发货。建完之后不要只看 MB21 的成功提示去 MMBE 看库存视图里的「预留/需求」列确认占用量真的挂上去了。这一步是新手最容易省掉的等 MRP 跑完发现需求没进来回头再查就得多绕好几圈。提示MB21 里若不勾 M预留是「不可用」状态此时参照发货会失败。这不是权限问题也不是单据没保存纯粹是 M 标记没放开。3.2 批量建与批量处理MBBR 和 MBVR 的分工MBBR 用来批量创建预留适合一批成本中心、一批研发项目同时要占料的场景逐张 MB21 敲太慢。批量的输入结构本质上是把 MB21 的抬头和行项目摊平成表格一次提交多行批量建之前务必确认移动类型和需求日期在各行是否一致混着填最容易出现半批成功半批报错。MBVR 则是批量处理已有预留两个核心用途清理超期预留、批量勾选 M。它的判断逻辑完全依赖后台那两个参数指针如下若「基准日期 − 过去的需求日期 保持期间30 天」运行 MBVR 时系统会删除 30 天以外的预留删的是数据库里的记录。若「将来的需求日期 − 基准日期 允许天数10 天」运行 MBVR 时会自动给 10 天以内的预留勾上「允许移动」。这里有个必须点破的真相后台配了参数不等于系统会自动清理。指引里写得很直白——如果没人跑 MBVR后台设置就不起作用系统不会自己删超期预留。常见做法是配两个后台 JOB一个处理 30 天前的超期清理一个处理 10 天内的自动勾选每天各跑一次。JOB 建好之后要盯运行日志跑失败了不报给人等于白配。3.3 查询入口MB23 按编号、MB25 按物料MB23 按预留编号查MB25 按物料查两个入口解决的是不同追问。业务拿着单号来问「这批料占了没有」走 MB23计划问「这个物料一共被占了多少、都占在哪些单上」走 MB25。MB23 里重点看三处行项目的需求数量、M 标记状态、以及这张预留是否由生产订单自动带出。自动生成的预留会带出订单关联信息这决定了它能不能被手工改。MB25 的用法更偏分析尤其是排查「可用量为什么这么低」时把该物料所有预留拉出来对着需求日期排一遍基本就能看出是哪些远期需求把可用量吃掉了。两个事务码都不提供聚合汇总需要跨工厂、跨物料看总量时常规做法是导到表格里自己按物料和日期透视或者直接查底表。底表在后一章展开。4. 生产订单自动预留OPL8 三个选项决定成败手工预留是补充手段生产场景真正的主力是工单自动带出的预留。这块的控制点集中在一个配置项上但选错了会导致「预留什么时候生成」完全偏离预期而且自动预留有个硬限制——不能改。4.1 OPL8 控制预留生成时机路径SPRO → 生产 → 生产线控制 → 主数据 → 订单 → 定义订单类型的相关参数OPL8。在订单类型参数里控制是否生成预留选项大致三档选项行为适用判断从不不生成预留该订单类型不走库存占料比如纯服务类下达后状态变为 REL 才生成预留需要计划确认后才占料控制感最强立即创建订单即生成预留排产节奏紧、要求建单即锁料选「下达后」的逻辑是订单建了但没下达说明计划还没最终确认此时占料容易占错下达即 REL 状态才代表这张单要真干了。选「立即」则适合那种建单即投产、不占料就会缺料的快节奏产线。这两档没有绝对优劣关键看你们计划确认和建单是不是同一个动作——如果建单的人经常建完放着不审选「立即」就会积累一堆虚假占用。改 OPL8 属于影响面较大的配置尤其是已有大量在途订单的类型改完只对新单生效老单不会追溯。这一点务必提前和计划端对齐否则会出现新旧订单行为不一致的诡异现象。4.2 自动预留的验证与不可改性验证方式两条腿走路走 CO03 看生产订单的组件清单可以看到每个物料的需求数量走 MB23 查该订单带出的预留两边数量应当一致。如果 CO03 有组件但 MB23 查不到预留先回 OPL8 确认该订单类型的预留选项再确认订单状态是否已到 REL。自动产生的预留不能用 MB22 修改这是设计使然不是权限缺失。想调整数量只能回生产订单改组件由系统重新带出。但发货是可以的走 MIGO 参照预留或订单发货这条链路是通的。还有个高频困惑点某张单已经有自动预留了再手工 MB21 建一张同物料同需求的预留系统可能拒绝或产生重复占用。指引里提到「MB21 已自动创建预留后无法再手工创建预留」遇到这种情况不要硬建先确认是不是自动预留已经覆盖了需求避免同一批料被占两次、可用量被重复扣减。顺带说一句「承诺量与预留不一样」这个容易混淆的点承诺量是 ATP 层面针对销售订单的交期承诺预留是库存层面的实物占用两者算的是不同的账。计划端抱怨「ATP 说能交、仓库说没料」多半就是把这两套逻辑混着看了。4.3 底表定位RKPF 与 RESB前台查不明白的时候直接看底表最快。预留的凭证头在RKPF行项目在RESB。RKPF 存抬头信息预留号、凭证类型、创建日期、工厂等RESB 存每一行的物料、数量、需求日期、移动类型、M 标记等。排查时的常用思路先在 RKPF 按预留号或创建日期锁定抬头再用预留号关联 RESB 拉行项目。比如怀疑有大批超期预留没被清理就按 RESB 的需求日期做条件筛怀疑自动预留没生成就按 RESB 里是否带订单号去判断来源。注意底表查询属于排查手段不要拿它替代前台事务码做业务操作。生产环境直接改底表是红线看到数据不对走事务码修正或走调整单据。5. 避坑与排查五条踩过的坑逐条给现象和解法这一章集中处理最费时间的五类问题。每一条都按「现象 → 原因 → 解决」写能对号入座就别再从配置第一页翻起。5.1 建预留提示可用量不足但 MMBE 明明有库存现象MB21 建 1000 个的预留报错改成 999 就过了可 MMBE 显示该物料库存总数是 1001。原因可用量不是库存总数而是扣掉已被其他预留占用部分后的余额。指引里的例子说得很清楚库存总数 1001此前已预留 2 个可用就是 999预留数不能超过 999。这正是「预留数不超过库存数」这条控制生效的表现不是系统算错。解决先走 MB25 把该物料所有预留拉出来看是哪几张单吃掉了可用量再判断这些占用是否仍然有效。若存在明显该清未清的旧预留走 MBVR 处理或让业务确认后冲销而不是去找 IT 改检查规则。反过来如果业务确实需要在库存不足时先建预留那就说明动态可用性检查的规则配得偏严需要回到 2.3 节的事务码规则上评估而不是一张单一张单去凑数字。5.2 超期预留一直不消失越积越多现象后台明明配了保持期间 30 天几个月过去一堆需求日期早已过期的预留还挂在系统里占着可用量。原因MBVR 是手动或 JOB 触发的批处理程序系统不会自己定时清理。没人跑配置就是摆设。这条在指引里被特意点出来说明实际项目里踩的人不少。解决建两个后台 JOB一个按 30 天超期清理一个按 10 天内自动勾 M每天各跑一次JOB 建完当天手动跑一遍验证效果之后定期看 JOB 日志。日志里如果显示删除数量为 0 而业务说确实有超期单就去核基准日期的取数逻辑多半是需求日期字段和预期不一致。5.3 M 勾不上或者勾上了却发不了货现象一MB21 建单时 M 是灰的或默认不勾业务想立刻发货发不了。现象二勾了 MMIGO 发货仍报错。原因前者多半是后台 MVT 缺省值未勾或前台「用于所有项目 → 移动开关」没放开后者常见于预留已被后续处理锁定、或移动类型与库存状态不匹配。解决先分清是「默认值问题」还是「单据状态问题」。默认值问题去 2.2 节的配置项核对单据状态问题走 MB23 看该行当前状态确认是否已被参照发货过、是否已被删除标记。别在 MB21 界面上反复尝试勾选字段灰显时前台是改不动的。5.4 自动预留查不到或者查到了却改不了现象生产订单已创建CO03 里看得到组件MB23 却查不到对应预留或者查到了想调数量被告知不可修改。原因查不到先看 OPL8 里该订单类型的预留选项——如果是「下达后」订单没到 REL 状态就不会生成如果是「从不」那本就不该有。改不了是因为自动预留由订单驱动MB22 不开放修改。解决查不到就按订单状态和 OPL8 两条线排查不要先去怀疑底表。要调数量回生产订单改组件后重新带出要调需求日期同样在订单侧处理。已经存在自动预留的情况下别再手工 MB21 补一张容易造成重复占用。5.5 改了后台配置前台行为没变化现象调整了号码段或可用性检查规则新建预留的表现和改之前一模一样。原因配置没传输到对应客户端或者改动只对新单据生效、对已有单据不追溯也可能是配置改在了错误的层级工厂级与公司代码级不一致。解决先确认改动所在客户端和请求号再拿一张全新单据复测别用在途老单验证。工厂级参数和公司代码级设置要成对检查一边改了另一边没改前台表现就会很玄学。6. 用 MB25 RESB 做一次可用量体检一个可复用的排查套路前面讲的都是单点动作实际项目里更值钱的是一个能反复用的体检套路。我处理「某物料可用量异常偏低」这类问题时固定走三步基本十分钟内能定位到具体是哪几张单在捣乱。第一步前台用 MB25 按物料 工厂拉全量预留注意把「已删除」「已发货」这类状态也带出来看别只看未清项。导出的关键列至少保留预留号、行号、需求日期、数量、移动类型、M 标记、是否带订单号。第二步按需求日期排序把记录切成三段区间判断依据处理方向已过期需求日期早于今天超出保持期间走 MBVR 清理或业务确认后冲销临近需求日期在未来允许天数内该勾 M 的批量勾上保障发货远期需求日期在允许天数之外确认真实性防止虚假长期占用第三步对「远期」这一段做真实性抽查。把数量加总和 MMBE 里的库存总数、MRP 跑出的需求做交叉比对。如果远期占用占了可用量的大头而对应的生产订单本身排产还没定那基本可以判定是建单过早、占料过猛问题出在 OPL8 的时机选择或计划端的建单纪律上而不是库存管理本身。需要更细的来源判断时直接查 RESB。下面这段只做查询示例字段名按你们系统的实际命名核对不要照抄上线-- 按物料工厂查预留行项目定位占用来源 SELECT r.RSNUM AS 预留号, -- 预留凭证号与 RKPF 关联 r.RSPOS AS 行号, r.MATNR AS 物料, r.WERKS AS 工厂, r.BDTER AS 需求日期, -- MBVR 判断超期的核心字段 r.BDMNG AS 需求数量, r.BWART AS 移动类型, r.XWAOK AS 允许移动 -- 对应前台的 M 标记 FROM RESB r WHERE r.MATNR 物料号 AND r.WERKS 工厂 ORDER BY r.BDTER;这段查询的用处是把 MB25 看不到的字段比如 XWAOK 与需求日期的组合一次拉平方便按日期区间做批量判断。参数上重点盯两个MATNR必须带前导零否则查不到数据BDTER是日期型做区间比较时注意系统日期格式。查出来的结果只用于分析任何清理动作仍回 MBVR 或对应事务码执行。有个细节值得单独拎出来跑了 MBVR 的自动勾选之后建议隔天再抽查一次 MB25确认 M 标记真的落到了行项目上。批处理程序的执行结果和前台显示之间偶尔会有时间差尤其在 JOB 排在下班后跑的环境里。我吃过一次亏——JOB 日志显示成功实际因为基准日期取的是程序运行当天跨月那批单落到了另一个区间等于白跑。从那以后每次调整保持期间或允许天数这两个参数我都会强制走一遍「改配置 → 手动跑一次 MBVR → MB25 抽查三条记录」的闭环确认行为符合预期再交给 JOB 日常跑。这份指引里那些配置路径和事务码单独看都是零散知识点真正串起来用的就是这种「前台看现象、底表找来源、批处理做清理」的固定套路。希望帮到你。本文还有配套的精品资源点击获取