SAP替代物料机制解析:MRP为何只追主物料及配置避坑

简介:SAP-PP 模块替代物料操作完全手册面向已具备 PP 基础的顾问以及计划、数据维护人员,系统梳理平行切换与非平行切换两类替代逻辑,帮助理清 A 耗尽后切换到 B、按比例分摊、后继组替换等场景下的配置思路与风险点。压缩包共 1 个文件,为 docx 格式,约 871KB,按批量更换 BOM 组件、只消耗不采购、后继物料、后继组、按比例拆分等主题分节展开,并配置事务代码与字段说明。已有 2557 人学习下载,可见该主题在实务中需求稳定。读者能从中获得从主数据 MRP4 视图非连续标识、可用性检查 02 到 CS02 中止组与后继组对应等关键设置的具体做法,也能看到 MRP 仍跑出旧物料需求、三种及以上物料替代受限、用量不等需额外配置等易踩问题的提醒,便于对照自查现有方案、减少试错,并据此规划 BOM 更改编号与生效时间的控制策略。

1. 替代物料:为什么 MRP 在三种物料都没库存时仍然追着 A 跑

做过 SAP-PP 的人大多踩过这个坑:A、B、C 三个物料互为替代关系,库存全为零,MRP 跑完之后,需求仍然挂在 A 上,B 和 C 毫无反应。很多人第一反应是配置没生效,反复检查 MRP4 视图、BOM 里的替代组,最后发现配置一点没错——系统的设计逻辑本来就是这样的。在平行切换的模型里,A 始终被当作“最适用物料”,只有到生产订单做可用性检查那一刻,才会根据库存或比例决定这次到底用哪个物料。MRP 阶段并不判断替代,它只认主物料。

这个反直觉的机制,恰恰是 SAP 替代物料体系的核心。理解它,你才能明白为什么“A 用完了自动切换到 B”这种需求,在不同场景下要用四五种完全不同的配置去实现,也才能避开“配置全对但结果不对”这类反复出现的问题。下面按“分类 → 主数据字段 → 具体实现 → 排查”的顺序,把替代物料的底层机制完整讲清楚。

2. 替代的分类:平行切换和非平行切换到底差在哪

SAP 里的替代关系,从大类上分只有平行切换(parallel)和非平行切换(non-parallel)两种,但这两个词经常被误解成“按顺序换”和“不按顺序换”。真正的区别在触发条件和后续行为。

2.1 平行切换:整组一起换,不看单个物料库存

平行切换的语义是“一组物料被另一组物料整体接替”。触发条件通常绑定在某个关键物料上,一旦它的库存归零,整组一起切换,即使组内其他物料还有库存也不再用。

原文里那个例子很典型:66000031 和 66000032 同属 A 组,66000034 和 66000035 同属 B 组,替代触发点是 66000031。库存设成 31=0、32=100、34=200、35=300,下 100 个成品订单、各需 200 个组件,物料可用性检查一跑,31 和 32 一起切到 34 和 35——尽管 32 手里还有 100 个。这个行为的实现基础是“中止组”和“后继组”两个字段的配对,下面会细讲。

平行切换还有另一个语义分支:按比例拆分。三个物料功能相同、只是供应商或批次不同,业务上要求每次生产按 50/30/20 分摊,这属于“平行使用”,不是“用完再换”。它在 BOM 里靠“使用可能性”字段实现,跟后继组是两套机制。

2.2 非平行切换:一个换一个,可累加也可整体跳

非平行切换就是单个物料之间的接替,但内部还有细分。原文提到的“两个物料替代(后继物料)”是一种:A 的非连续标识设为 1、后继物料指向 B,可用性检查发现 A 只有 45 个,订单需要 100 个,系统自动补 55 个 B,是累加扣减——先把 A 用光,再拿 B 补差额。这种模式只适用于两个物料,三种以上就不行了。

另一种是 BOM 里连续替代:三个物料全挂在 BOM 里,同一替代组,配优先级 1/2/3,策略选 2(100% 检查)。这时系统严格按优先级往下走,A 库存够就用 A,不够就整体跳到 B,不累加。原文那句“每次只能使用一个物料”说的就是这个:A 有 200 库存只能支撑 100 个成品,超出部分整单跳到 B,不会 A 用一半 B 补一半。

这两种模式的行为差异极大,但配置入口都在 BOM 的项目行上,非常容易混淆。记住一条判据:需要“累加补差”就找后继物料(MRP4 视图),需要“整体跳转”就用 BOM 替代组 + 优先级。

2.3 只消耗不采购:替代的第三种语义

原文还提到一个容易被忽略的场景:A 主数据的采购视图物料状态设成 02,BOM 里仍然是 A,但采购员转不了采购申请。这不是技术意义上的“替代”,而是业务上的“软退出”——用物料状态卡住采购入口,配合安全库存做预警,把决策权交给人。

这个做法的机制细节值得说清楚:物料状态 02 控制的是 BOM 相关业务,不控制采购,所以原文特意提醒“需要看实际需求调整配置(OMS4)”。安全库存的作用不是自动补货,而是给计划员留出提前期,在 A 的库存跌破安全库存、产生采购申请、采购员发现转不了单这个链条上,制造一个人工判断的窗口。判断完再决定是改组件清单、改物料状态,还是改 BOM 重新跑 MRP。这条路看起来笨,但对“物料要逐步退出但不能突然断供”的场景,反而最可控。

3. 主数据字段:非连续标识、后继物料、可用性检查的联动

替代能不能自动发生,九成取决于主数据三个字段的配合。很多“配置了但没效果”的问题,根源都在这里。

3.1 MRP4 视图:非连续标识与后继物料

在物料主数据的 MRP4 视图里,有两个关键字段:非连续标识(Discontinuation Indicator)和后继的物料(Follow-Up Material)。非连续标识的取值决定这个物料在替代链条里扮演什么角色:

标识值含义典型用途
空非替代物料普通物料
1单一平行终端的部分/物料替代触发点,指向后继物料
3相关平行不连续部分/物料同组被替代,后继物料留空

原文的后继组例子里,66000031 设 1 并指向 66000034,66000032 设 3 且后继物料必须留空。这个“留空”是关键:组内只有触发物料带后继指向,其他成员带标识 3 表示“我跟着一起换”。如果给 32 也填了后继物料,行为会变得不可预期。

提示:非连续标识和 MRP3 视图的“可用性检查”是两个独立开关,缺一不可。只配非连续标识,系统在生产订单里根本不做库存检查,替代永远不会触发。

3.2 MRP3 视图:可用性检查必须设 02

原文反复强调“A 物料设置可用性检查 02,如果不检查不会替代”,这句话的分量比它看起来重得多。可用性检查(Availability Check)设成 02 之后,生产订单创建或下达时才会去核对组件库存,核对结果发现短缺,才轮到替代逻辑接手。如果这里是空的,系统默认不做检查,订单可以照下,但发料时才发现库存不足直接报错——这正是原文说的“库存只有 200 但订单可以下 300,发料时报错”。

一个常见误解是把可用性检查当成“库存校验”,其实它更是替代机制的触发入口。没有它,前面所有替代配置都是死配置。

3.3 工作计划视图:被低估的下单前置条件

原文在“两个物料替代”一节里有一句很短的提醒:66000039 需要维护工作计划视图,否则不能下生产订单。这句话容易被跳过,但它点出了 PP 模块的一个硬约束——物料没有工作计划视图(Work Scheduling),生产订单在创建阶段就会卡住,替代逻辑再完美也没机会执行。

排查时如果遇到“订单下不出来”,别急着怀疑替代配置,先看这个物料的视图是否齐全。视图不全的物料在 CO01 里报的错往往不直观,新手容易在 BOM 和替代组上反复折腾,最后发现是主数据少了个视图。这类坑属于典型的血泪经验,值得在测试环境里复现一次,印象会深得多。

4. 两套实现路径:后继组配对与 BOM 替代组的操作细节

机制讲清楚之后,落到操作层面。SAP 的替代实现主要有两条路:一条是 MRP4 + 中止组/后继组,一条是 BOM 替代组 + 优先级/使用可能性。前者适合整组切换和累加替代,后者适合多物料连续替代和比例拆分。

4.1 中止组与后继组:靠两个代码字符串连线

后继组的实现原理很巧妙:它不靠外键关联,而是靠两个字符串字段的值相等来实现组与组的绑定。在 BOM 项目行的“终止数据”里填中止组代码(比如 A),在另一组物料的“物料后继数据”里填后继组代码(同样填 A),两边的字符串一相等,链接就建立了。

原文特别点出这个坑:“此处要注意,中止组代码和后继组代码需要一致,否则无法链接。”作者说被某篇文章误导过,一直达不到效果——大概率就是两边代码不一致,或者中止组里混入了别的值。

还有两个操作细节必须注意:一是“如果此处设置了替代项目组,需要关闭(删除信息)否则终止数据灰掉”,也就是说 BOM 项目行上的替代组字段和中止组字段是互斥的,先配了替代组,终止数据入口就变灰不可用;二是全部设置完保存后,可以用 CS02 菜单里的“附加 → 更多的 → 终止信息”验证配对结果,这是检查链接是否成立的直接手段。

值得说明的是,四个物料也可以全部挂进同一个 BOM 一起维护,不一定非要分成两组分别设置。原文那句“也可以把四个物料都添加到一个 BOM 里进行一起维护”,给了一个更简洁的变体,逻辑等价,配置量更小。

4.2 替代组 + 优先级:严格按序、不累加

连续替代的配置在 BOM 项目行上完成:所有参与替代的物料都加入同一个替代组(比如都填 A),然后点替代组旁边的箭头,弹出对话框维护每行的优先级、策略、使用可能性。

项目行物料优先级策略使用可能性
0020物料一12空
0030物料二22空
0040物料三32空

策略选 2 表示 100% 检查,优先级决定尝试顺序。这个组合的行为是:优先尝试优先级 1 的物料,库存不够支撑整单需求就整体跳到优先级 2,不拆分、不补差。原文描述的“66000031 库存 200 可以生产 100 个成品,那就只能下 100 个,用完再下 100 才会跳到 66000032”,就是这套配置的典型表现。

策略的值还有另一层含义:策略 1 表示“按使用可能性决定”,此时优先级不起作用,系统按百分比拆分需求。原文的比例拆分场景用的就是策略 1,配合 50/30/20 的使用可能性,下 100 个成品、单件需 2 个原材料、共需 200 个组件,系统就按 5:3:2 拆成 100/60/40。

4.3 使用可能性的归一化计算:不足 100% 会怎样

原文给了一个容易被低估的计算细节:替代组内使用可能性之和不足 100% 时,SAP 不会报错,而是按比例归一化。公式可以写成:

某物料需求数量 = 总需求 * 该物料使用可能性 / 组内使用可能性之和

原文的例子是 A 为 50%、B 为 25%,总需求 1 个,则 A = 1 × 50% / (50% + 25%) ≈ 0.667,B ≈ 0.334。系统照算不误,但问题出在计量单位是 PC 这类整数单位时:0.667 个四舍五入之后,合计凑不满 1 个,实际所需物料数量不足。

结论很直接:替代组内使用可能性之和应当等于 100%。如果业务上就是不满 100%,比如某个物料只占一部分份额、其余是损耗或虚位,也要想清楚单位换算和舍入后的结果,别让系统替你做了这个决定。

4.4 整单替换:CS20 批量换组件

还有一种不属于“运行时替代”的做法:直接用 CS20 批量替换物料组件。原文的描述是“CS20,b 代替 a,a 物料消亡,b 物料在公司中全面替代”,点执行后如果涉及多个 BOM,会列出待替换清单让你勾选,绿色表示成功、红色表示失败。

CS20 → 输入旧物料 a、新物料 b → 执行 → 勾选目标 BOM → 执行替换 结果行:绿色 = 替换成功,红色 = 失败(需逐条查原因)

这个工具的定位和前面几种完全不同:它改的是 BOM 的静态数据,改完之后 BOM 里就是 b,没有 a 了,MRP 自然也只跑 b 的需求。所以它适合“永久性全面换料”,不适合“过渡期内两种物料并存”。原文那句建议——A、B 长久不用的情况下,直接用 BOM 的更改编号、生效时间来控制更好——本质上也是这个思路:用 BOM 的版本机制管理物料切换,比依赖运行时的替代逻辑更干净,至少 MRP 不会在你以为已经停用的时候又跑出 A 的需求。

5. 避坑:替代配置里最容易翻车的五个点

替代物料的坑有个共同特征:配置看起来都对,结果就是不对,而且报错信息往往指向别处。下面五条是这类问题里复现率最高的。

5.1 配了替代但订单不切换

现象:MRP4 里非连续标识、后继物料都填了,BOM 也维护了,下单后系统仍然要求 A 全额,不切 B。

原因:物料主数据 MRP3 视图的可用性检查没设成 02。没有这个开关,生产订单不做库存核对,替代逻辑根本没有触发入口。

解决:MM02 进 MRP3 视图,把可用性检查设为 02,重新建单测试。注意改完之后已存在的订单不会回溯,要新建订单验证。

5.2 后继组设置了但两组不联动

现象:中止组填了 A,后继组也填了 A,测试时整组切换不生效,或者只有部分物料切了。

原因:两边代码字符串不一致(比如一边是 A、一边是 a,或一边多了空格),或者中止组里误填了替代项目组导致终止数据入口变灰、实际没保存成功。

解决:用 CS02 的“附加 → 更多的 → 终止信息”查看实际配对结果,确认两边代码逐字符一致;检查项目行上是否残留替代组设置,有的话先删掉再配中止组。

5.3 订单下不出来,报错指向不明

现象:CO01 创建订单时报错,提示信息含糊,看不出跟替代有什么关系。

原因:替代物料的主数据缺工作计划视图,或者工艺路线没维护。原文明确说过“66000039 需要维护工作计划视图,否则不能下生产订单”,工艺路线同样必须存在,否则订单不能创建。

解决:MM02 检查该物料的视图是否齐全,CA01 确认工艺路线已维护。这类问题优先查主数据完整性,别在替代配置上绕圈。

5.4 按比例拆分后数量不足

现象:使用可能性设了 50/30/20 之外的比例,订单里拆出来的数量合计对不上总需求,PC 单位下出现小数被舍掉。

原因:组内使用可能性之和不是 100%,系统按归一化公式计算后再舍入,整数单位下就会短斤少两。

解决:把组内使用可能性调整为合计 100%;如果业务上确实无法凑整,评估换单位或改用后继物料累加模式。

5.5 三种以上物料想用后继物料累加

现象:A、B、C 三个物料希望 A 用完用 B、B 用完用 C,且累加扣减,照后继物料的配置做完发现只支持两个。

原因:MRP4 的后继物料模型是“一个物料指向一个后继物料”,天然只覆盖两点替代。原文写得很直白:“此方法只适用于 A、B 两种物料替换的情况,三种及三种以上物料替换此方法不可用。”

解决:三个以上物料要么改用 BOM 替代组 + 优先级(整体跳转、不累加),要么接受 BOM 静态换料。原文还提到一个边界:如果 A、B 在 BOM 中用量不相等(比如 A 用 2 个、B 用 3 个),后继物料模式还需要额外在 BOM 里做设置,这种情况下直接换用替代组方案更简单。

6. 设计取舍:为什么 SAP 把替代做成“运行时决策”而不是“计划时决策”

把这几套机制摆在一起看,会发现一个共同的设计取向:SAP 几乎把所有替代判断都推迟到了生产订单的可用性检查那一刻,MRP 阶段只认主物料。这个选择不是偷懒,而是有明确代价权衡的。

如果让 MRP 阶段就做替代推演,系统需要在跑需求计划时预判每个替代组的库存消耗顺序、比例分配、时间窗口,这会让 MRP 的计算复杂度和不确定性急剧上升——同一批需求,因为替代组内库存的微小变化,可能推出完全不同的采购建议,计划员根本没法复核。把决策推后到订单执行时,MRP 的输出保持简单可解释(需求永远挂在主物料上),替代的复杂性被隔离在单个订单的可用性检查里,出问题也容易定位。代价就是我们开头说的那个现象:三种物料都没库存时,MRP 仍然追着 A 跑,需要人工用 BOM 更改编号、生效时间来收尾。

理解了这层取舍,很多操作建议就有了依据。原文说 A、B 长久不用时直接用 BOM 更改编号和生效时间控制,本质上是承认运行时替代不适合处理“永久退出”,那属于静态数据管理的范畴。同理,只消耗不采购那条路用物料状态 02 加安全库存做人工决策窗口,也是因为系统不打算替你做“什么时候该彻底停用”这种业务判断。

验证一套替代配置是否真的生效,我习惯按这个顺序走一遍:先确认主数据三个开关(可用性检查 02、非连续标识、工作计划视图);再在测试环境造一组极端库存(触发物料为 0、同组其他物料充足),看整组是否按预期切换;最后检查订单组件行里的实际物料和数量,而不是只看订单能否创建成功。造极端库存这一步不能省,正常库存下替代往往不触发,看起来“没问题”,一上量就暴露。

从那以后我每次配替代物料,都强制先把这组极端库存跑一遍再交付,宁可测试环境多花半小时,也不在生产订单下达的那天被叫去救火。希望帮到你。

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