☰
SAP生产预留全链路:MB21配置、MBVR清理与OPL8自动预留
2026/11/4 2:49:12 网站建设 项目流程

简介:一份围绕 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 是灰的或默认不勾,业务想立刻发货发不了。现象二:勾了 M,MIGO 发货仍报错。

原因:前者多半是后台 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 日常跑。

这份指引里那些配置路径和事务码,单独看都是零散知识点,真正串起来用的就是这种「前台看现象、底表找来源、批处理做清理」的固定套路。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询