简介:SAP PP模块替代物料操作是生产管理中处理物料短缺与替换的关键技能。这份由资深顾问整理的《SAP-PP-替代物料操作完全手册》面向SAP实施顾问、生产计划及物料管理人员,系统梳理了平行切换与非平行切换两大类替代逻辑,并围绕批量更换BOM组件、只消耗不采购、后继物料与物料后继组、按比例替代等场景给出明确设置路径。资源为1个docx文档,总计871KB,内容以文字操作为主,适合按步骤对照练习。目前已有2550人下载学习。文档从实例出发,详细演示了MM02、CS02、CO01等事务代码的配置要点,包含非连续标识、可用性检查、终止组与后继组维护等关键细节,并对A物料耗尽后系统自动切换B物料、多物料按比例消耗等常见需求提供可落地的解决方案,能帮助读者有效降低因物料短缺导致的生产中断风险。
1. SAP-PP-替代物料操作完全手册:先弄懂“替代”再动手
SAP PP 里的替代物料,绝不是“把 A 改成 B”这么简单。生产订单下达时 A 物料库存为 0,系统能不能自动切到 B,取决于你事先配的是“后继物料”“后继组”还是“按比例替代”,三者触发逻辑完全不同。我见过不少计划员把几套配置混着用,结果订单下发后库存检查一片红,发料时才发现 B 物料根本没进 BOM。这个手册把 SAP 中各种替代场景的设置路径、事务代码和踩坑点一次讲清,适合 PP 模块顾问、生产计划员和物料数据维护人员。你可以把它当配置参考,也可以照着测试步骤一步步做一遍,确认替代逻辑真的生效。
2. 替代物料分类与选型:先确定你要哪种替代
2.1 平行切换与非平行切换:系统判定逻辑的差异
在 SAP PP 里,替代物料首先分两大类:平行切换和非平行切换。很多初学者把这两个词当成“同一种功能的不同叫法”,实际上它们完全是两套机制,配置入口也不一样。
平行切换指的是 A 物料用完之后,系统自动切换到 B;B 用完之后再切到 C。这种切换是“单向链”,而且系统永远把 A 视为最适用的物料。哪怕 A、B、C 三个物料全部没有库存,MRP 跑出来的需求仍然是 A,而不是 B 或 C。这一点非常容易引发业务误判:明明 B、C 都还有库存,怎么 MRP 还在报 A 的需求?因为平行切换只在生产订单下达那一刻的物料可用性检查里生效,MRP 层级的计划需求依然落在首选物料上。
非平行切换则不同,它更接近“不足即补”:A 有 30% 库存、B 有 70% 库存,生产订单需求 100 个,系统会把 A、B 一起分配进去,而不是等 A 耗尽才切到 B。按比例替代就属于这一类。如果你所在的公司遇到的是产品换代、老物料逐步退出的情况,平行切换更贴合流程;如果只是某一款物料临时短缺、需要同功能物料按比例或用完再补,非平行切换更合适。先分清是“用完再切”还是“缺了就补”,后面配置才不会走错入口。
这里还有一个被反复验证的建议:如果 A、B 物料已经确定长久不用,不要只依赖替代配置,直接用 BOM 的更改编号、生效时间窗口去控制,比任何替代逻辑都干净。替代配置解决的是“过渡期”,更改编号解决的是“退出期”,两者别搞混。
2.2 五种常见业务场景与对应配置路径
不同业务诉求对应不同技术方案,我习惯先列一张对照表再动手,避免配置做到一半发现选型错误。
| 业务场景 | 配置方式 | 关键事务代码 | 适用条件 |
|---|---|---|---|
| 旧物料彻底消亡,全公司统一替换 | 批量更换物料组件 | CS20 | 旧物料不再允许出现在任何 BOM 中 |
| 旧物料只消耗库存、不再发生采购 | 物料状态 02 + 安全库存 | MM02 / OMS4 / CO02 / MD02 | 老库存继续消化,但采购不能再触发 |
| 单物料替代单物料 | 后继物料 | MM02(MRP4 视图)+ CS02 + CO01 | 一对一替代,A 用完切 B |
| 一组物料整体替代另一组物料 | 物料后继组 | MM02 + CS02 | 多对多,按组整体切换 |
| 同功能多物料按比例消耗 | BOM 替代策略 1 + 使用可能性 | CS01 / CS02 | 多供应商供货,按百分比分配 |
| 多个物料按优先级逐个接管 | BOM 替代策略 2 + 优先级 | CS02 + CO01 + MM02(可用性检查 02) | 三个及以上物料连续替代 |
这里要特别说明“只消耗不采购”的场景。正文里的做法是:BOM 中仍然保留 A 物料,把 A 物料主数据采购视图中的物料状态设为 02,这样 BOM 不会动,采购员也转化不了 A 的采购申请。当 A 库存消减到安全库存触发警示库存时,系统会产生采购申请,但因为物料状态受限采购员无法继续下单,这个信息会反馈到计划员或数据维护人员那边,进入人工判断环节:继续用 A、补充采购,还是完全用 B、把 A 另行处理。人工判断后再决定是改物料状态、改 BOM,还是用 MD02 重新跑 MRP。
有一点需要注意:物料状态 02 控制的是 BOM,并不代表控制住了采购流程,具体需要结合实际业务去调整 OMS4 的配置。正文里这个说法很实在——主数据状态不是万能的,采购侧还要单独确认。
2.3 配置前必须检查的三项主数据
动手配置之前,我一般会花十分钟检查三样东西,否则大概率翻车。
第一,物料主数据视图要齐全。替代物料相关的核心字段集中在 MRP4 视图,比如非连续标识、后继物料;而可用性检查在 MRP3 视图。你如果只改了 MRP4,漏掉 MRP3 的可用性检查 02,生产订单根本不会做库存检查,替代自然也不会发生。
第二,BOM 的状态。参与替代的物料必须先维护进 BOM,再考虑冻结。如果 BOM 已经冻结,后续再去维护替代物料会直接报错,而且 BOM 里仍然是旧物料。
第三,工艺路线和工作计划视图。被替代的新物料如果没有维护工作计划视图,生产订单根本创建不了。这个坑很隐蔽,你在 CS02 里看 BOM 一切正常,到 CO01 创建订单却提示该物料不能用于生产。所以新物料引入时,先确认工作计划视图是否已维护完整。
这三项检查做完再选具体配置方式,才不会把时间消耗在端到端排查上。
3. 双子物料替代:后继物料的完整配置流程
3.1 物料主数据设置:MRP4 视图的非连续标识与后继物料
以正文里的例子来说,物料 66000037 用完后由 66000036 接替。我们首先要在 66000037 的物料主数据里声明“后继物料是 66000036”。
进入事务代码 MM02,输入物料 66000037,切换到 MRP4 视图。这里有两个字段要重点看:非连续标识和后继的物料。非连续标识填 1,表示“单一平行终端的部分/物料”,意思是该物料在替代链中只有一条后继路径。后继的物料字段填 66000036。保存时系统不一定立刻校验后继物料是否存在,如果物料号输错,要等到生产订单下达时才会暴露,所以保存前最好用 MM03 确认一次描述和物料状态。
还有一个关键动作容易被忽略:给 66000037 在 MRP3 视图中把可用性检查设置为 02。这个参数一旦漏配,后面的步骤基本白做——生产订单不会自动触发库存可用性检查,系统也不知道库存不足,更不会跳转到后继物料。
这里有一个前提要说死:这种方法只适用于 A、B 两种物料一对一替换。三种及以上物料用这个方法配置不会生效,需要改用连续替代或者后继组的方案。另外,如果 A、B 在 BOM 中的用量不相等,例如 A 用 2 个、B 用 3 个,仅靠这条路径无法正确替代,正文也明确建议直接改用按比例替代的配置方式更简单。
3.2 BOM 维护与库存准备:用量相等是前提
物料主数据设置完成后,进入 CS01 维护 BOM,把 66000037 和 66000036 都维护到该成品的 BOM 项目行中。这里的关键约束是:A、B 的用量必须相等。正文里强调过,如果用量相等,以上设置直接生效;如果不等,还需要在 BOM 里做额外设置,但那样不如直接用按比例替代更简单。
接下来准备库存。用 MIGO 分别给 66000036 补充 100 个库存,给 66000037 补充 45 个库存,然后用 MMBE 核对两笔库存是否都正确记账。这里我习惯把 MMBE 的显示界面截一张图留档,后面核对生产订单组件分配时用得着。
要注意,库存准备这一步不只是为了测试,还为了确认“替代逻辑是累加扣减”这件事。也就是说,生产订单需求 100 时,系统会先扣减 66000037 的 45 个,剩余 55 个才落到 66000036,而不是一上来就按两个物料各 50 分配。
3.3 生产订单验证:从 CO01 看自动切换效果
用 CO01 创建生产订单时,需要维护好工艺路线和工序。正文中的测试口径是生产数量 20*5,即 5 个工序或 5 个批量,每个 20,最终产成品数量 100。假设产出 1 个成品需要消耗 1 个 A 类物料,原材料总需求就是 100 个。
系统在执行物料可用性检查时,会发现在 BOM 中首选物料 66000037 只有 45 个库存,于是自动把剩余的 55 个分配给后继物料 66000036。生产订单组件面板上你会看到 66000037 的需求数量是 45,66000036 的需求数量是 55,不需要计划员手动去改任何一行。
有一个细节要强调:这种设置下,替代是在“物料可用性检查”那一刻完成的,而不是发料时。如果你在生产订单里看到组件仍然是 66000037 全额 100,没有出现 66000036,先不要怀疑替代配置,直接回头查 MRP3 视图的可用性检查是否真的设成了 02。
还要明白这条路径的边界:它只认 A 库存是否够,如果 A 库存不是 0 而是不足,系统会补充 B;如果 A 库存足够,B 完全不参与。所以后续如果业务要求“A 先消耗、B 只作为最后保障”,这条路径是合适的;如果业务要求“A、B 同时按比例消耗”,那要走第 5 章的按比例替代。
4. 物料后继组设置:一组物料整体替换的配置与测试
4.1 为什么需要后继组:单物料后继不够用
如果只是 A、B 两个物料一对一替代,第 3 章的方法已经够用。但业务经常出现“一组物料替换另一组物料”的需求。正文里的例子很典型:整机 66000033 的 BOM 下面有四个组件,66000031、66000032 属于 A 组,66000034、66000035 属于 B 组。供应商切换后,B 组要整体接替 A 组。
这里的核心诉求不是“用 66000034 替代 66000031、用 66000035 替代 66000032”,而是 A 组必须整体退出、B 组整体接手,并且触发条件要看 A 组里某一个关键物料的库存。只要 66000031 库存为 0,不管 66000032 还剩多少库存,整组都切到 B 组。
这种情况下,给每个物料单独维护后继字段是做不到组级联动的。标准做法是用 BOM 子项目里的“终止数据/中止组”和“物料后继数据/后继组”把两组物料关联起来。这也是正文配置中最容易让人绕晕的部分,配置思路要拎清楚。
4.2 配置步骤:MM02 非连续标识 + CS02 终止组与后继组
先在物料主数据层面把入口做好。用 MM02 打开 66000031 的 MRP4 视图,非连续标识设置成 1,后继物料填 66000034。注意:这里填 66000034 表示“如果只看 66000031 自己,它的接替者是 66000034”,后面还需要在 BOM 里用组代码把两者绑成组关系;单靠这个字段,组替代是不完整的。
再用 MM02 打开 66000032 的 MRP4 视图,非连续标识设置成 3,后继物料一定不要填。3 的含义是“相关平行不连续部分/物料”,表示该物料和组内其他物料一起参与平行替代,但它本身不指定单一后继。如果这里误填了后继物料,替代逻辑会混乱,测试时可能出现部分组件被替代、部分组件没被替代的怪现象。
接下来用 CS02 打开抬头物料 66000033 的 BOM。找到 66000031 的项目行,双击数量进入子项目界面,点击“终止数据”,在“中止组”里输入 A。返回到 66000032 的项目行做同样操作,中止组也输入 A。这一步的含义是:66000031、66000032 都被标记为被替代组 A 的成员。
再找到 66000034 的项目行,双击数量进入子项目界面,点击“物料后继数据”,在“后继组”里输入 A。66000035 做同样操作。这一步把 66000034、66000035 标记为后继组 A 的成员。设置完成后保存,重新用 CS02 进入 BOM,在菜单栏找到“附加 → 更多的 → 终止信息”,点击后就能看到两组物料的关联效果。
这里有两个非常容易翻车的细节。第一,中止组代码和后继组代码必须完全一致,大小写、空格、标点都不能差,否则 AB 两组根本连不起来。第二,如果子项目里之前设置过“替代项目组”,必须先把它关闭或删除信息,否则“终止数据”按钮是灰的,你根本进不去中止组维护界面。正文里特别提到过,之前很多人受某些资料误导,一直达不成整组替代的效果,多半就是这两个细节没处理干净。
4.3 测试验证:库存归零触发整组切换
配置完成后按正文的测试口径走一遍。库存状态设置为:66000031 库存为 0,66000032 库存为 100,66000034 库存为 200,66000035 库存为 300。下生产订单 100 个,每个产成品需要这些组件各 2 个,因此每组物料的需求量是 200。
在 CO01 中做物料可用性检查,系统会把 66000031 和 66000032 同时切换到 66000034 和 66000035。触发点是 66000031 已经没有库存,整组切换被激活,哪怕 66000032 还有 100 个库存也会一起被切过去。这就是组替代和单物料替代最本质的区别。
测试时如果发现 66000032 仍然生成需求、替代不完整,优先排查 66000032 的非连续标识是否设成了 3、以及它上面是不是误填了后继物料。另外,正文还提到一种更简单的维护思路:也可以把四个物料全部添加进同一个 BOM 里,统一维护后继组信息,效果相同,只是维护界面上更集中一些。
5. 替代配置避坑指南:策略选择、比例校验与高频故障
5.1 按比例替代:策略 1 与使用可能性的正确设置
有一种常见需求:A、B、C 三种物料功能完全相同,只是生产日期或供应商不同,业务要求按比例拆分消耗,比如多供应商供货导致物料号不一致,但产品规格完全一样。这种情况不要用后继物料,而是用 BOM 里的替代项目组。
用 CS01 或 CS02 进入 BOM,把三个物料都维护到同一个替代组 A。双击“数量”进入项目行界面,系统会出现一个蓝色小箭头,点击后进入替代参数维护界面。这里的关键参数是“策略”和“使用可能性”。
策略字段有两个值:1 表示手工维护/按用途可能性,2 表示 100% 检查。选择策略 1 时,优先级不起作用,真正决定分配比例的是“使用可能性”字段。三个物料分别输入 50、30、20,这样生产订单下达时会按 5:3:2 的比例拆分需求。假设需求总量 200,分配结果就是 100、60、40,不需要任何手工干预。
有几个边界情况需要知道。如果某个物料的使用可能性留空为 0,系统会弹警告要求输入,但可以直接回车,生产订单里该物料的数量显示为 0;检查时系统会根据实际库存情况找“合适”的物料。如果全部都输 100,订单里三个物料都显示全额数量,检查时再找合适物料。如果 A 输 100、B 和 C 输 0,那么 A 显示全额,检查时仍然会根据实际库存变动。
这里还要说明一个容易算错的点:使用可能性之和并不强制要求等于 100%,SAP 会自动归一化。正文给过一个计算示例:A 为 50%、B 为 25%,则 A 的需求等于 BOM 中的用量乘以 A 的使用可能性再除以两者之和,计算结果是 0.667;B 的需求是 0.334。这个逻辑本身没问题,但如果计量单位是 PC 这类不允许小数的单位,系统就可能出现所需物料数量不足的情况。所以我的习惯是让使用可能性之和严格等于 100%,避免在单位精度上留下隐患。
5.2 连续替代:策略 2 与优先级的正确设置
连续替代适合三个及以上物料按固定顺序逐个接管,和按比例替代最大的区别在于:连续替代同一时刻只用一个物料,A 用完才轮到 B,B 用完才轮到 C;按比例替代则是同一张订单里多个物料同时按比例消耗。
配置入口同样是 BOM 的替代项目组。用 CS02 进入 BOM,把所有参与替代的物料都加进去,双击每个物料的数量,给替代物料组统一命名,比如 A。点击替代项目组旁边的蓝色小箭头,系统会弹出项目行参数维护对话框,维护以下数据:
| 项目行 | 物料号 | 优先级 | 策略 | 使用可能性 |
|---|---|---|---|---|
| 0020 | R11007345 | 1 | 2 | 空 |
| 0030 | R11007028 | 2 | 2 | 空 |
| 0040 | R11007344 | 3 | 2 | 空 |
优先级 1 最高,先消耗 R11007345;库存为 0 后,再消耗 R11007028;然后再到 R11007344。策略 2 表示 100% 检查,这一点和按比例替代的策略 1 完全不同,不能混用。
连续替代生效有一个硬性前提:所有参与替代的物料,在物料主数据 MRP3 视图的可用性检查都必须设置为 02。否则系统不会自动检查可用库存数量,也就不会发生自动跳转。正文里有一个很典型的反面场景:库存只有 200,但因为不检查,生产订单可以下 300,发料时才会报库存不足。所以配置完成后,不要急着下大订单,先用一个超过库存数量的测试订单验证替代是否真的触发。
5.3 高频踩坑记录:现象、原因、解决
坑 1:三种及以上物料只按“后继物料”方式配置,替代不生效。 现象:生产订单中 B、C 物料始终不出现,A 库存耗尽后系统报错。 原因:单物料后继只支持一对一替代,三个及以上物料需要连续替代或后继组。 解决:改用 CS02 替代项目组维护策略 2 与优先级,或者用第 4 章的后继组方案。
坑 2:库存明明为 0,生产订单却没有自动切换到替代物料。 现象:订单组件仍显示首选物料,库存检查通过,但发料失败。 原因:替代物料主数据 MRP3 视图的“可用性检查”未设置为 02。 解决:用 MM02 打开 MRP3 视图,把可用性检查改成 02,保存后重新跑 CO01 物料可用性检查。
坑 3:BOM 里中止组和后继组都填了,但 CS02 看不到替代关系。 现象:保存后重新进入 BOM,“终止信息”里没有预期中的组关联。 原因:中止组代码和后继组代码不一致,或者子项目里残留了旧的替代项目组,导致终止数据灰掉。 解决:删除替代项目组信息,确认两组代号完全一致后再保存,通过“附加 → 更多的 → 终止信息”验证。
坑 4:按比例替代下生产订单,需求数量出现小数或者总量不足。 现象:组件数量显示 0.667、0.334 这类小数,MRP 或发料环节数量对不上。 原因:使用可能性之和不是 100%,且计量单位是 PC 这类不允许小数的单位,系统归一化后产生精度损失。 解决:把使用可能性之和调整为 100%,或者更换计量单位后再跑一次。
坑 5:BOM 冻结后才想起来维护替代物料,一维护就报错。 现象:CS02 保存时提示 BOM 已冻结,无法修改,且 BOM 里仍然显示旧物料。 原因:替代物料需要在 BOM 冻结前维护完成。 解决:先解除冻结,或者用更改编号、生效时间窗口控制 BOM 有效期,避免在冻结状态下直接改。
6. 替代生效验证:生产订单与 MD04 双向确认
6.1 用 CO01 验证组件分配
配置做完不验证等于没做。我最常用的验证路径是:先用 CO01 创建一张带足量需求的生产订单,执行物料可用性检查,然后进组件明细看每个替代组的分配数量。如果看到首选物料需求数量等于它的库存数量、后继物料补足剩余部分,说明替代逻辑已经生效。
6.2 用 CS02 和 MD04 双向复核
BOM 层面的验证用 CS02 的“附加 → 更多的 → 终止信息”查看组关联;MRP 层面的验证用 MD04 看单个物料的供需情况。这里要特别注意一个现象:即使替代配置完全正确,当 A、B、C 三种物料全部无库存时,MRP 跑出来的需求仍然是首选物料 A,因为替代配置不会改变 MRP 层面的首选逻辑。如果你在 MD04 里看到 A 的需求而 B、C 有库存,不用慌,这是正常行为,不代表配置失败。
6.3 一个长久养成的习惯
从那以后我每次接手替代物料的配置或排查,都会强制走一遍同一套流程:先查 MRP3 可用性检查,再查 MRP4 后继关系,再进 BOM 看终止组和后继组是否配对,最后用 CO01 下一张超量订单验证替代触发,并用 MD04 确认 MRP 层不受干扰。这套流程看起来多花了五分钟,但替我挡掉了绝大多数“配置看起来没问题但订单就是不对”的玄学问题。希望帮到你。
本文还有配套的精品资源,点击获取