SAP生产预留操作全解析:从OMC2配置到MBVR批量清理

📅 发布时间:2026/10/17 21:03:27
SAP生产预留操作全解析:从OMC2配置到MBVR批量清理
简介这份《SAP-生产预留-操作》文档面向SAP MM与PP模块的顾问、生产计划员及仓储管理人员聚焦生产预留这一日常高频操作帮助读者理清从预留创建到查询、批量处理的完整流程。内容覆盖预留背景、OMC2预留编码、工厂级缺省值配置、预留可用性检查以及MB21手动创建、MB23按编号查询、MB25按物料查询、MBBR批量创建、MBVR批量处理与生产订单自动预留等事务码操作并延伸至OPL8控制、预留底表与预留数不超过库存数等进阶要点。资源为1个docx文档压缩包约836KB结构按目录分节便于按事务码快速定位查阅。目前已有695人学习下载适合需要系统掌握SAP生产预留配置与实操、对照事务码查漏补缺的从业者参考。1. 生产预留不是“占库存”一份 14 页操作指引拆开看很多做 SAP MM 或 PP 的同行第一次听到“生产预留”会下意识理解成“把库存锁死”。真到项目上才发现预留Reservation在 SAP 里更像一张带需求日期的领料申请单它不改变库存所有权却会进入 MRP 运算、影响可用性检查甚至在工单下达时自动生成。这份《SAP-生产预留-操作.docx》一共 14 页从 OMC2 号码段、工厂级缺省值、动态可用性检查一路写到 MB21/MB23/MB25/MBBR/MBVR 和 OPL8 工单自动预留最后落到 RKPF/RESB 底表。它解决的不是“怎么点按钮”而是“为什么这么配、配完在哪生效、不生效去哪查”。适合已经能跑 MB1A/MB1B但对预留的号码段、移动开关、批量清理机制还停留在“照着前人配置抄”阶段的顾问和关键用户。下面我按自己复现这份指引的顺序把能抄的步骤和容易翻车的地方拆开讲。2. 号码段与工厂级缺省值OMC2 和 MVT 到底管什么2.1 OMC2 预留编码先定号码段再谈创建预留和物料凭证一样创建时要分配一个唯一编号。OMC2 就是给预留分配号码段的地方路径是 SPRO-物料管理-库存管理和实际库存-号码分配-为预留定义号码分配。这里常见的做法是给手动预留和自动预留分两个号段比如手动用 01 段、自动用 02 段好处是后面用 MB23 查单时一眼能看出这条预留是人工建的还是工单带出来的。配置本身不复杂但有两个参数要留意一是号码段是否“外部给号”如果勾了外部给号前台 MB21 就能手工输预留号很多公司为了防重号会关掉二是当前号码段的编号范围要留足预留号是流水号跑批量 MBBR 时消耗很快号段用尽会直接报错现场表现就是“创建预留时提示号码范围已满”这时候不是权限问题是号段该扩了。# OMC2 配置检查清单在 SPRO 中逐项确认 # 1. 预留号码段是否存在编号范围是否覆盖当前流水 # 2. 是否允许外部给号外部给号前台可手工输预留号 # 3. 手动预留与自动预留是否分号段 # 4. 号段当前编号是否接近上限上面这段不是代码是排查顺序。我一般先看号段是否存在再看是否外部给号最后看流水用到哪了。顺序反了容易在权限上绕半天结果发现是号段满了。2.2 工厂级缺省值MVT、天数 M、保持、MRA 四个参数缺省值配置在 SPRO-物料管理-库存管理和实际库存-预留核心是四个参数MVT、天数 M、保持、MRA。MVT 控制前台预留行项目里“M”这个勾是否默认勾上勾上代表允许移动也就是这条预留可以随时发货不勾就发不了。天数 M 是允许提前发货的工作日天数比如填 10就是需求日期前 10 天开始可以发货。保持是预留的保留天数超过这个天数系统在跑 MBVR 时会做物理删除。MRA 是为预留自动创建存储地点库存数据。这里有个容易混淆的点MVT 在后台勾了前台不一定全勾。前台菜单“编辑-附加功能-用于所有项目-移动开关”也能控制多行项目的 M 勾选。所以现场经常出现“后台明明勾了 MVT为什么这条预留的 M 没勾”先别怀疑配置没生效去看前台是不是有人用移动开关批量取消过。工厂级参数配置在“后台-物料管理-库存管理和实际库存-工厂参数”里不同工厂可以有不同的天数 M 和保持天数。跨工厂业务的公司要注意预留是在哪个工厂创建的就读哪个工厂的参数不是读集团统一值。提示天数 M 和保持这两个值不是“配了就行”它们只在 MBVR 运行时才起作用。系统不会自己每天去清理必须有人或后台 JOB 去跑 MBVR。2.3 动态可用性检查02 和 03 决定 MB21 报不报错预留可用性检查的配置在 SPRO-物料管理-库存管理和实际库存-预留-设置动态可用性检查。这里的规则不是单独生效的它和物料主档 MRP3 视图里的可用性检查一起决定 MB21/MB22 的检查行为。指引里写得很明确02 和 03 决定了 MB21/MB22 的可用性检查规则。实际项目里02 通常对应“库存管理中的可用性检查”03 对应“预留/依赖需求中的可用性检查”。如果物料主档 MRP3 里没维护可用性检查组或者维护了但动态可用性检查里没配对应规则MB21 创建预留时就不会做库存数校验预留数可以超过库存数。反过来如果两边都配了创建 1000 个可以、1001 个不行因为库存总数 1001、已预留 2 个可用就是 999预留数不能超过 999。这个机制就是指引 2.11 说的“预留数不超过库存数”。它不是靠用户自觉是靠可用性检查规则卡住的。所以如果业务反馈“为什么别人能超预留、我不能”先对比两边物料的 MRP3 可用性检查组和动态可用性检查配置大概率是配置不一致。3. 手动与批量操作MB21、MB23、MB25、MBBR、MBVR 怎么配合3.1 MB21 手动创建成本中心 201、生产 261、研发 Y10MB21 是手动创建预留的事务码菜单路径是“后勤物料管理库存管理预留MB21-创建”。业务场景指引里写得很清楚新品研发无法对工单实施发料又想把这种消耗纳入 SAP 系统做全局控制申请后创建成本中心预留适用于转储、成本中心投料。操作时移动类型按需求选成本中心用 201生产用 261研发用 Y10。这里的关键是 M 勾选。勾了 M 就可以随时发货即使一个月以后发货也行不勾就不可用。指引里给的经验是“一般临近才勾选”这个习惯能减少误发货但也会带来另一个问题如果需求日期到了还没勾发货时会被系统拦住。# MB21 创建预留的关键字段顺序 # 1. 输入预留日期、工厂、需求日期 # 2. 行项目输入物料、数量、移动类型201/261/Y10 # 3. 确认 M 勾选状态允许移动 # 4. 保存后记录预留号用 MB23 复核这段顺序看起来简单但第 3 步是翻车高发区。很多人保存完才发现 M 没勾又回去 MB22 改如果预留已经被工单引用或已经部分发货改起来就麻烦了。我一般建议创建时就确认 M 状态别等发货时再补。3.2 MB23 与 MB25按号查和按物料查的分工MB23 是按预留编号查预留MB25 是按物料查预留。这两个事务码在排查时分工不同MB23 适合已知预留号、要看单条预留的详细状态比如工单自动生成的预留到底带出了哪些行项目MB25 适合不知道预留号、只知道某个物料最近被哪些预留占用了用来反查需求来源。指引里 2.9.2 提到“MB23 查询系统自动创建预留”以及“MB21 已自动创建预留后无法再手工创建预留”。这两句要连起来看工单自动预留生成后同一工单同一物料再手工 MB21 建预留系统会拦。现场表现是“明明库存够为什么建不了预留”原因不是库存是自动预留已经存在了。MB25 的实用场景是月底对账某个物料账面库存和可用库存对不上用 MB25 把该物料所有未清预留拉出来按需求日期排序看哪些是超期没发货、哪些是 M 没勾导致占着可用量。这比一条条 MB23 查快得多。3.3 MBBR 批量创建与 MBVR 批量处理清理超期预留的正确姿势MBBR 是批量创建预留适合一次性给多个成本中心或研发项目建预留。MBVR 是批量处理预留指引里说得很直白这个 MBVR 就是用来清理超期预留、批量勾选 M 的但如果没人操作后台的设置也就不起作用了系统不会自动清除超期的预留。MBVR 的删除逻辑要理解清楚后台配了“允许移动的天数 10”“保持期间 30 天”后以基准日期为准如果基准日期减去过去的需求日期大于 30 天系统跑 MBVR 时会对距离基准日期 30 天以外的预留做删除删的是数据库内 30 天外的预留如果将来的需求日期减去基准日期小于 10 天系统跑 MBVR 时会对距离基准日期 10 天以内的预留自动勾选“允许的移动”。# MBVR 后台 JOB 配置建议指引里的总结 # JOB 1每天跑一次处理 30 天外的超期预留删除 # JOB 2每天跑一次处理 10 天内的预留自动勾选 M # 两个 JOB 分开跑不要合并成一个指引里总结的做法是“一般都是在后台设置两个 JOB一个前 30 天的一个后 10 天内的每天分别跑一次让其自动处理预留”。这个做法我认同但要注意 JOB 的基准日期。如果 JOB 跑的时候基准日期取的是系统当前日期那跨月、跨年时需求日期的计算要确认清楚否则会出现“该删的没删、该勾的没勾”。注意MBVR 删除的是数据库内的预留删之前确认没有未清的发货需求。生产环境跑之前先在测试环境用相同参数验证一遍删除范围。4. 工单自动预留与 OPL8从不、下达后、立即怎么选4.1 OPL8 订单类型参数自动预留的开关在这里生产订单控制是否预留的配置在 SPRO-生产-生产线控制-主数据-订单-定义订单类型的相关参数也就是 OPL8。指引里列了三个选项从不、下达后、立即。从不就是不自动生成预留下达后是状态变成 REL 才能生成预留立即是创建工单就生成预留。这三个选项没有绝对好坏取决于业务对预留时点的要求。如果希望工单创建就占住可用量选立即如果希望下达前还能自由调整 BOM 和数量选下达后如果预留完全靠手工 MB21 控制选从不。实际项目里选下达后的居多因为工单创建时 BOM 可能还没最终确认立即生成预留容易造成大量修改。通过生产订单 CO03 的 BOM 和预留 MB23 都可以查看物料的需求数量。自动产生的预留无法修改 MB22但可以 MIGO 发货。这一点很关键自动预留是“只读”的要改数量只能改工单组件不能直接改预留行。现场如果业务想直接 MB22 改自动预留的数量要告诉他们此路不通得回到工单去改。4.2 承诺量与预留的差别别把 ATP 和预留混为一谈指引 2.9.2 里有一句“承诺量与预留不一样”这句话值得展开。承诺量Commitment通常和 ATP 检查相关是在销售订单或工单确认时对可用量的承诺预留是库存管理层面的需求单据进入 MRP 运算。两者都会影响可用量但来源、事务码、底表都不同。常见误解是“销售订单承诺了就等于预留了”其实不是。销售订单的承诺量走的是 ATP 逻辑预留走的是 RESB 表。如果业务反馈“销售说承诺了库存为什么生产预留建不出来”要去查可用量到底被哪边占了可能是 ATP 承诺占了也可能是预留占了还可能是两者叠加。4.3 自动预留后手工创建被拦MB21 和工单预留的互斥指引里写“MB21 已自动创建预留后无法再手工创建预留”这个互斥关系在排查时很有用。现场场景是工单已经自动生成了预留但业务觉得数量不对想手工再建一条补上结果 MB21 保存时报错。这时候正确的做法不是反复试 MB21而是去 CO02 改工单组件数量让自动预留重新生成。如果确实需要额外预留比如工单之外的研发投料那应该用不同的移动类型比如 Y10和不同的成本中心建独立预留而不是在同一工单同一物料上叠加。系统拦的是同一需求来源的重复预留不是拦所有预留。5. 底表与库存校验RKPF/RESB 和“预留数不超过库存数”的边界5.1 RKPF 与 RESB预留的头和行预留的底表就两张RKPF 是凭证头RESB 是行项目。RKPF 存预留号、创建日期、工厂、预留类型等头信息RESB 存物料、数量、需求日期、移动类型、M 勾选状态等行信息。查底表是排查“预留到底生没生成、生成了几条、M 是什么状态”的终极手段。-- 按预留号查头和行示例表名和字段以实际系统为准 SELECT h.RSNUM, h.BUKRS, h.WERKS, i.RSPOS, i.MATNR, i.BDMNG, i.ENMNG, i.XLOEK FROM RKPF h JOIN RESB i ON h.RSNUM i.RSNUM WHERE h.RSNUM 预留号;上面 SQL 里 XLOEK 是删除标记ENMNG 是已发货数量BDMNG 是需求数量。排查时重点看 XLOEK 是否被置上、ENMNG 是否已经等于 BDMNG。如果 XLOEK 有值但前台 MB23 还能看到说明删除标记没生效或查询条件没过滤。5.2 预留数不超过库存数的两种配置结果指引 2.11 给了两个对比A 库存不够时可以创建预留B 库存不足时不能创建预留。创建 1000 个可以1001 个不可以从库存看已经预留了 2 个库存总数 1001那么可用就是 999预留的数不能超过 999。这个功能实现了控制预留数不能超过库存数量。A 和 B 的差别就是动态可用性检查配没配、物料主档 MRP3 可用性检查组维没维护。如果业务希望严格控制预留不超可用量就把两边都配上如果希望预留先建、发货时再卡就只配一边或都不配。没有标准答案取决于业务对“预留占用量”的容忍度。提示可用性检查配了之后MB21 创建时会报错但 MBBR 批量创建时可能报错信息不直观。批量场景建议先小批量试跑确认报错逻辑符合预期再放量。6. 把 MBVR 跑对一个被低估的日常技巧MBVR 这个事务码很多人知道它能清理超期预留但真正每天跑对的人不多。我自己的习惯是先在测试环境用生产参数跑一遍模拟确认删除范围和勾选范围再上生产 JOB。模拟时重点看两个边界基准日期减过去需求日期刚好等于 30 天的预留和将来需求日期减基准日期刚好等于 10 天的预留。这两个边界上的记录不同系统版本和参数微调下行为可能不一样跑之前用 MB23 把边界记录号记下来跑完对照。另一个技巧是 MBVR 的 JOB 不要和月结 JOB 挤在同一时间段。月结时库存和预留都在动MBVR 删除超期预留如果和月结并发可能出现“刚删完又被月结程序引用”的情况。我一般把 MBVR 放在业务低峰期比如晚上 10 点之后跑完看 spool 日志确认删除条数和勾选条数。# MBVR 跑完后的检查清单 # 1. 看 spool 日志删除条数、勾选条数是否在预期范围 # 2. 用 MB23 抽查边界预留号确认删除/勾选结果 # 3. 用 MB25 按物料抽查可用量变化 # 4. 确认没有未清发货需求的预留被误删最后说一个我踩过的坑有次生产环境 MBVR 跑完业务反馈“预留没了但货还没发”。查下来是保持天数配得太短加上 JOB 基准日期取的是系统日期把一批需求日期刚过 30 天但实际还没发货的预留删了。从那以后我每次调保持天数或天数 M都强制走一遍“测试环境模拟 边界记录对照 生产小范围试跑”的流程不再直接改生产参数。希望帮到你。本文还有配套的精品资源点击获取