简介:面向SAP生产计划(PP)与物料管理从业者的一份替代物料操作手册,系统梳理了SAP中替代物料的业务场景与配置方法。内容从平行切换与非平行切换两大分类切入,重点覆盖批量更换物料组件、只消耗不采购、后继物料替代、物料后继组设置以及按比例拆分等高频操作场景,并结合生产订单中A物料用完后自动切到B、按30%/70%比例消耗等实际业务需求给出配置路径。
资源为单个docx文档,整体约871KB,共1个文件,便于直接查阅或作为项目交付、日常运维的操作参考。已有2550人学习下载。文档不仅给出具体T-Code与物料主数据MRP4视图、BOM终止数据等关键字段的设置步骤,还结合库存为0/不足、A/B组交替、多供应商按比例消耗等生产实例加以说明,能帮助读者规避MRP仍对停用物料产生需求、后继组代码未关联导致切换失效等常见误区。
1. 生产订单下达就报“库存不足”,替代物料为什么没起作用?
做 SAP PP 的人,十有八九都遇到过这个场景:BOM 明明把替代物料都挂上去了,物料主数据里也设置了后继物料,可生产订单 CO01 一下达,系统照样报“可用性检查不通过 / 库存不足”,该切换的物料纹丝不动。更邪门的是,有时候 A 物料库存已经归零,订单居然还能下,等发料 MIGO 的时候才炸出“物料 xxx 数量不足”的报错,生产计划员电话直接打到你工位上。
这类问题在 SAP 项目里属于高频翻车点。替代物料不是“在 BOM 里加两行”就完事,它牵扯物料主数据的 MRP3/MRP4 视图、BOM 项目行的终止组与后继组、可用性检查控制,还有 CS20 批量替换的细碎逻辑。任何一个环节没对齐,系统就按最保守的方式走——只认 BOM 里的第一行物料,库存不够就硬报错。这篇文章就是一本完整的替代物料操作手册级排错笔记,把几种替代场景的设置步骤、报错原因、参数含义和排查顺序一次讲透,照着做就能让“自动切换”真正跑起来。
2. 后继物料不生效:先查 MM02 的 MRP4 视图和可用性检查
2.1 老物料库存归零,订单却不自动切到新物料
最常见的故障现象是:设置了物料 66000036 作为 66000037 的后继物料,66000037 库存已经变成 0,生产订单按 100 个需求下达,系统还是生成 66000037 的采购申请或直接报库存不足。看起来“后继物料”字段白填了。
根因在物料主数据的检查机制。一路排查下来,问题基本都出在两点:一是 MRP4 视图里的“非连续标识”没设置,二是“可用性检查”没有设置为 02。这两个字段不配对,SAP 只在运行 MRP 时参考后继物料关系,生产订单创建和物料可用性检查时根本不会触发替代逻辑。
2.2 一个失败的配置案例:可用性检查缺失
我经历过一次很典型的配置疏漏。过程是这样的:
- MM02 维护物料 66000037,MRP4 视图里“非连续标识”填 1,“后继物料”填 66000036。
- 物料 66000036 没有维护工作计划视图。
- 66000037 的 MRP3 视图“可用性检查”字段留空。
- 库存 66000037 有 45 个,生产订单需求 100 个,CO01 下达时报物料 66000037 数量不足,完全没触发 66000036 的替代。
排查过程从 CS03 看 BOM 开始,BOM 没问题;再到 MD04 看需求传递,发现订单还是挂在 66000037 上;最后点开 CO01 的“物料可用性检查”日志,系统压根没有把 66000036 纳入检查范围。逐项核对物料主数据,发现工作计划视图缺失、可用性检查为空,两个问题叠加,替代逻辑直接失效。
2.3 正确配置:MRP4 I 视图、可用性检查 02、工作计划视图缺一不可
正确的配置顺序如下,建议按这个顺序在测试环境完整做一遍:
1. MM02 维护物料 66000037(老物料): - MRP3 视图 -> 可用性检查 -> 设置为 02 - MRP4 视图 -> 非连续标识 -> 设置为 1 - MRP4 视图 -> 后继物料 -> 填写 66000036 2. MM02 维护物料 66000036(新物料): - 工作计划视图必须完整维护(工厂日历、生产调度参数等) - 否则后续 CO01 创建生产订单时会提示无法确定生产参数 3. CS01/CS02 维护 BOM: - 在成品抬头物料下挂两个组件行:66000037 和 66000036 - 两个组件行用量按实际 BOM 用量维护 4. MIGO 给 66000037 补充库存 45 个,给 66000036 补充库存 100 个 5. CO01 创建生产订单: - 数量输入 100,物料需求会自动显示 66000037 需要 45、66000036 需要 55这里几个字段的语义必须理解到位。“非连续标识”填 1 表示“单一平行终端的物料/部分”,意思是当前物料是被替代方,存在一个明确的后继物料。“可用性检查”填 02 是告诉系统在订单下达时做库存检查,这是触发替代的前提,不填就相当于告诉系统“别检查库存”,替代自然也不会启动。
2.4 库存部分不足时怎么扣减:45 + 55 的自动拆分逻辑
订单需求 100 个,老物料只有 45 个库存,新物料会自动补充 55 个,这一点是很多计划员最看重的能力。系统在可用性检查时发现 66000037 库存 45,不够的部分不会直接报错,而是按后继物料关系从 66000036 的库存里扣减 55。只要 66000036 的库存足够,生产订单就能正常下达。
实际操作中要注意:这个“库存不足自动补后继”只适用于两个物料之间的一对一替代。如果有 A 用完用 B、B 用完用 C 这样的三个物料链式替代,这种方法就不适用了。三种及以上物料的连续替代要改用“替代组 + 优先级”的方案,这在后文第 4 章详细展开。另外,生产订单创建后如果需求数量中途变更,替代数量不会自动重新计算,需要重新执行可用性检查。
3. 批量替换物料组件:CS20 执行出现红色失败标识怎么办
3.1 旧物料淘汰、全面替代时 CS20 的执行路径
当某个物料要彻底退出使用,比如物料 a 消亡、物料 b 全面接管,逐个修改 BOM 组件行太慢了。正确做法是使用 CS20 批量更换物料组件。它能一次性把多个 BOM 里的组件 a 全部换成 b,省去逐条 CS02 双击修改的体力活。
CS20 的操作入口按以下路径执行:
事务代码 CS20 - 输入旧物料号 a(物料组件) - 输入新物料号 b(替代物料) - 输入需要替换的 BOM 范围(工厂、用途、BOM 抬头物料范围) - 点击执行 - 系统列出所有符合条件的 BOM - 勾选需要替换的 BOM,点击“更换项目” - 绿色高亮 = 替换成功,红色高亮 = 替换失败执行完成后有一个很重要的动作:进入 CS03 查看被修改 BOM 的变更记录。CS20 的本质是批量修改 BOM 项目行,会生成变更凭证。如果后续查账、做 BOM 对比时发现数据对不上,变更记录是唯一的追溯依据。
3.2 红色失败的核心原因:BOM 状态冻结与组件行锁定
CS20 批量替换不是无条件的。遇到红色失败,最常见的原因是 BOM 或组件行被冻结、被标记删除,或者 BOM 抬头物料尚未发布就尝试替换。
判断失败原因的操作顺序是这样:
- 点击红色高亮的 BOM 行,查看系统消息栏给出的具体错误号。
- 进入 CS03 查看该 BOM 的状态,看是否显示“冻结”或“删除标记”。
- 检查组件行 a 的“物料状态”字段,如果主数据里被设置成删除标记,CS20 会拒绝替换。
- 检查组件行是否被其他单据引用,比如未结算的生产订单、未清的计划订单。被引用状态下的组件行锁定,CS20 无法直接写覆盖。
3.3 操作顺序参数与点击前后注意事项
执行 CS20 前需要调整的参数不多,但有一个细节值得注意。执行界面里的“BOM 用途”字段通常会带出 1(生产),如果物料在多个用途的 BOM 里出现,比如维护 BOM 和销售 BOM 都有,需要按实际范围选择。有的公司习惯把用途 1 和用途 5 都勾上,但只替换生产 BOM,销售 BOM 里的料号保持不变,这种情况就要手动缩小范围,否则替换范围过大,容易误伤。
CS20 有个“模拟”选项,建议先跑一次模拟再实际执行。模拟不会写数据库,只会把将要修改的 BOM 列表和替换结果显示出来。发现替换范围不对,直接退出即可,不会留下半截数据。
3.4 失败后如何手动处理:CS02 逐项更换与变更编号控制
落地的经验是这样:CS20 替换失败或者替换范围不理想,不要反复重试同一操作,改用 CS02 逐项更换更可控。逐项更换的流程是:
CS02 输入 BOM 抬头物料 - 双击组件行 a 的数量字段,进入项目详细界面 - 在“物料”字段中,把 a 改为 b - 保存后系统会提示创建变更编号 - 如未创建变更编号,系统会默认立即生效如果 a 物料长期不再使用,但历史 BOM 里还残留它的记录,且不希望系统再对 a 产生需求,直接用 CS20 把 BOM 组件批量替换成 b,同时把 a 的物料状态改为“只消耗不采购”(第二章详细描述),两条线一起做才不会留尾巴。
补充一个生产实践中验证过的细节:如果被替换的物料在 BOM 中存在成本核算相关配置,替换后还需要重新执行成本核算(事务代码 CK11N 或 CK40N),否则标准成本估算里仍然保留旧物料的价格构成。
4. 替代组配置翻车:非连续标识与中止组、后继组的配合
4.1 两种替代组逻辑:物料组替代与连续替代
到这一章,进入替代物料最复杂的部分。前面说的一对一后继物料只覆盖两个物料的情况。实际生产中有两类更复杂的需求:
- 组替代:一组物料(A 组)作为一个整体被另一组物料(B 组)替代。只要 A 组的关键物料库存归零,整组都切到 B 组。
- 连续替代:同一个替代组里多个物料按优先级排队,第一个用完后自动消耗第二个,再消耗第三个。
这两种配置的报错形态和排查方向完全不同。组替代常用的物料主数据字段取值是“非连续标识 1(单一平行终端)+ 3(相关平行非连续部分)”,而连续替代用的是“替代组 + 优先级 + 策略”。方向搞错,配置出来的东西根本跑不通。
4.2 踩坑案例:中止组和后继组代码不一致,导致替代完全失效
我处理过一个很经典的求助案例:某公司把组件 66000031、66000032 作为 A 组,66000034、66000035 作为 B 组。物料主数据里,66000031 的非连续标识设为 1、后继物料填了 66000034;66000032 的非连续标识设为 3、后继物料留空。BOM 里 66000031 和 66000032 的“终止数据”中都填了中止组“A”,66000034 和 66000035 的“物料后继数据”中填了后继组“A”。
看着配置齐全,实际生产订单下达后却完全没有替代发生。前前后后排查了很久,最后发现是继承组和后继组代码不一致导致的:66000031 和 66000032 的中止组填的是“A”,而 66000034 和 66000035 的后继组字段使用的是“B”,两边的组代码对不上,系统没法建立替代链接。这个字段不一致,SAP 在订单下达时找不到关联关系,只能在原物料上干耗。
4.3 正确的组替代配置步骤:MM02 + CS02 完整流程
正确做法是把物料主数据、BOM 终止数据、BOM 后继数据三段设置全部对齐。关键步骤如下:
第一步:MM02 配置物料主数据(以 66000031 为例) - 非连续标识:1(单一平行终端的部分/物料) - 后继物料:66000034 - 可用性检查:02 第二步:MM02 配置物料 66000032 - 非连续标识:3(相关平行不连续部分/物料) - 后继物料:留空 第三步:CS02 维护 BOM,双击组件 66000031 的数量字段 - 进入项目详细界面 -> 点击“终止数据” - 在“中止组”字段中输入 A - 组件 66000032 同样操作,中止组也填 A 第四步:CS02 维护 BOM,双击组件 66000034 的数量字段 - 进入项目详细界面 -> 点击“物料后继数据” - 在“后继组”字段中输入 A - 组件 66000035 同样操作,后继组也填 A 第五步:CS02 保存后,菜单栏 -> 附加 -> 更多的 -> 终止信息 - 查看物料后继组的链接效果值得注意的关键点是:非连续标识 1 表示自己是“带头被替代物料”,系统会通过它的库存来判断替代触发时机;非连续标识 3 表示“跟随被替代物料”,自身不承担触发判断。如果整组物料里所有物料都设成 1,系统反而会乱;如果都设成 3,没有触发源。
4.4 一个典型的测试验证:库存 A 组有货 B 组无货,订单如何走
把配置做完之后,用一组测试数据验证效果是必要的步骤。假设:
66000031 库存 = 0 66000032 库存 = 100 66000034 库存 = 200 66000035 库存 = 300 生产订单数量 = 100,BOM 用量 = 2 个/成品 需求总量 = 200执行物料可用性检查后,系统会从 66000031 和 66000032 整体跳到 66000034 和 66000035。因为 66000031 的库存为 0,触发了这一组的整体切换,即使 66000032 还有 100 个库存,也不参与消耗。这是组替代的核心特征:触发源物料库存没了,整组都切走,组里有库存的物料也不动。
在配置界面里有个附带的细节:如果 BOM 项目行之前设置过“替代项目组”,这个字段必须清空,否则“终止数据”按钮会变成灰色,无法录入中止组。我处理过的案例里至少有两次是这个原因——数据看是灰色的,但点不开,换到日志看才发现有旧替代组记录在作祟。
4.5 四种替代场景的适用性对比与选型
| 场景 | 物料数量 | 核心配置字段 | 适用性 |
|---|---|---|---|
| 一对一后继物料 | 2 种 | 非连续标识 1 + 后继物料 | 库存不足自动补后继,数量必须小于等于需求量 |
| 物料组替代 | 多组 | 非连续标识 1/3 + 中止组/后继组 | 按触发源库存归零整组切换 |
| 按比例替代 | 不限 | 策略 1 + 使用可能性 | 多供应商供货时按比例拆分需求 |
| 连续替代(队列式) | 3 种及以上 | 替代组 + 优先级 + 策略 2 | 库存用完自动跳到下一物料,优先级越高越优先消耗 |
这几种方案不是互斥的,同一个 BOM 里可以同时存在不同的替代逻辑。但一条铁律不变:所有替代都必须建立在“物料可用性检查 = 02”的基础上。没有这个设置,第 2 章到第 4 章的所有方案统统失效。
5. 替代物料高频问题排查:五个必踩的坑与对应解法
5.1 坑一:MRP 跑出来的需求还是老物料,明明已经设置了替代
现象:A、B、C 三个物料都在替代组里,库存全为 0,MD04 跑 MRP 时生成的采购申请还是指向 A。
原因:SAP 系统中的替代逻辑优先级认为“第一个物料”是首选物料。替代关系只解决“已有需求消化库存时切换”,不解决“无库存时计划订货”的归属问题。
解决:如果老物料长期不用,单纯靠替代组挡不住 MRP 需求。用 CS02 配合更改编号(ECN)控制 BOM 的有效期,过期后老物料不再纳入 MRP 运算范围。同时把老物料的物料状态改为 02(只消耗不采购),双保险。此时系统不再产生老物料的采购申请,MRP 需求会转到后继物料上。
5.2 坑二:可用性检查已经设 02,生产订单下达还是报库存不足
现象:MRP3 视图可用性检查已改为 02,生产订单数量 300,库存只有 200,CO01 依然报库存不足,没有跳到替代物料。
原因:可用性检查控制字段不仅要看物料主数据,还要看“检查规则”。如果生产订单类型里的可用性检查规则设置不完整,系统不会执行替代逻辑,只会做简单数量判断。
解决:检查后台配置路径“生产”-“物料可用性检查”-“检查规则”,确认订单类型的可用性检查参数包含替代物料的处理步骤。没有完整配置的,按检查规则 02(仅检查库存)+ 替代物料激活处理,保存后重新下达订单。另外检查一下 BOM 组件行“可用性检查”字段是否被手动覆盖成了空值。
5.3 坑三:使用可能性比例写了 50+50,生产订单数量却多出 100%
现象:在 BOM 替代组里维护了三个物料的使用可能性比例为 50%、30%、20%,但生产订单下 100 个成品后发现物料需求变成了 150 个甚至翻倍。
原因:比例维护错误。SAP 在计算按比例替代时,是按“使用可能性权重”在所有替代物料之间分配总需求。物料使用可能性之和如果不是 100%,系统会按归一化比例分配到总和,比如 50+25 归一化后就变成 66.7% + 33.3%。如果某种物料在 BOM 里用量为 2,比例计算又基于整组用量,最终需求数量就会翻倍。
解决:在维护使用可能性时,确保同一替代组内的比例之和等于 100。BOM 里的“使用可能性”字段双击输入时会有警告提示,但不能只忽略,一定要核对最终生产订单的组件需求量。实际验证快照:A=50%、B=30%、C=20%,则 BOM 用量 2 个/成品、订单数量 100,需求分别是 100、60、40,总计 200,否则就说明比例维护有偏差。
5.4 坑四:CS02 双击组件数量后,终止数据按钮是灰色的
现象:进入 BOM 项目详细信息界面,“终止数据”按钮不可点击,无法为物料设置中止组。
原因:组件行自身已经存在替代项目组信息。SAP 的逻辑是一个组件要么是“被替代方(终止数据)”,要么是“替代发起方(替代项目组)”,两者互斥。
解决:先找到组件行现有的替代项目组字段,将其清空(点击删除信息),再回来操作终止数据按钮。如果清空后按钮仍然是灰色,检查组件行是否被标记删除,标记删除状态下也是灰色。
5.5 坑五:66000039 物料在物料主数据里有所有视图,生产订单还是下不了
现象:新物料已经完成 MM01 创建,所有视图都维护了,生产订单 CO01 创建时报“物料 xxx 未维护工作计划视图 / 无法创建订单”。
原因:生产订单创建依赖工艺路线和物料的工作计划视图。物料主数据缺工厂数据/工作计划视图时,SAP 无法确定生产参数,系统直接中断。
解决:MM02 进入工作计划视图,维护工厂日历、生产能力参数、生产调度参数等基础数据。生产订单下达前还必须为该物料创建工艺路线,使用 CA01 维护。这一步不做,替代物料配置再完整也走不到计划排产环节。
6. 快速定位替代物料不生效:一套可复现的排查顺序与验证动作
在生产环境里遇到过太多替代物料问题后,逐步沉淀出一套排查模板。这些步骤的定位顺序是固定的,从最简单、最可能的原因开始,不要一上来就钻后台配置。
第一步,先验证模拟库存与可用性检查是否激活。用事务代码 MMBE 查看替代物料双方库存,再用 CO01 创建一个测试订单,下达前用菜单“物料可用性检查”单独执行一次,看系统日志是否把后继物料带出来。如果日志里只有老物料,说明配置链路某个环节断了,继续往下。
第二步,进入 CS03 查看 BOM 项目行。重点关注三个字段:组件行“终止数据”的中止组、组件行“物料后继数据”的后继组、组件行“替代项目组”字段是否为空。中止组和后继组的代码值要一一对照,字母大小写和空格也必须一致。这一步能过滤掉绝大多数配置问题。
第三步,回看 MM02 的 MRP4 视图,查两个关键字段:非连续标识是否为 1 或 3,后继物料是否已填写。MRP3 视图的可用性检查是否为 02。如果检查规则是“空”或者“04”,替代不会触发,而且系统只在后台日志里留下一个不起眼的提示,生产计划员根本注意不到。
第四步,用表格核对替代策略与业务场景是否匹配:
| 期望行为 | 应使用的配置方式 | 检查重点 |
|---|---|---|
| A 用完自动用 B | 非连续标识 1 + 后继物料 | MRP4 字段是否填写 |
| A 组用完切 B 组 | 非连续标识 1/3 + 中止组/后继组 | 组代码一致性 |
| 按比例出货 | 策略 1 + 使用可能性 | 比例之和是否 100% |
| 排队连续替代 | 策略 2 + 优先级 | 优先级是否有重复或空缺 |
第五步,验证替代触发后库存扣减逻辑。MIGO 对老物料补充少量库存(比如 10 个),用 MD04 检查计划订单,再转成生产订单,看可用性检查结果。如果配置正确,订单的需求量会同时包含老物料 10 个和新物料差额;如果只有老物料那 10 个,说明替代未生效,回到第二步重新排查。反复验证到订单能自动带出两种物料的需求数量,配置才算真正闭环。
第六步,如果是生产环境已存在的大量 BOM,用 CS20 批量替换后必须重新跑一次 MD01/MD02 重新计划,否则旧 BOM 结构产生的历史需求可能还挂在老物料上,造成短期内采购仍按旧物料走。
这个模板的开发背景是团队曾因为连续替代的优先级维护失误导致整条产线缺料。从那以后,每次调整替代物料,我都会强制走一遍上述检查顺序,并要求计划员在下达生产订单前,先执行一次物料可用性检查,确认替代物料被系统正常识别后再释放订单。这样虽然多一道操作,但能挡住绝大多数配置层面的坑,希望这份排查顺序也能帮你在处理物料替代问题时少走几个来回。
本文还有配套的精品资源,点击获取