☰
SAP替代物料:五类场景配置、验证与避坑
2026/10/27 14:46:22 网站建设 项目流程

简介:面向SAP PP顾问、生产计划与物料管理人员以及制造企业信息化实施人员,系统梳理SAP中替代物料与后继物料的配置逻辑和常见场景,帮助读者理解平行切换、按比例消耗、批量替换及物料后继组的适用边界。资源包共1个docx文件,约871KB,以操作手册形式组织,便于按业务场景检索和对照练习;已有2553人学习。内容围绕CS20b批量更换、MM02的MRP4非连续标识与后继物料、CS02中止组与后继组、可用性检查、BOM和库存测试等展开,给出T-code步骤、配置要点与注意事项,可用于排查替代不生效、MRP需求跑错、库存切换异常等问题,也可作为企业内部培训和实施参考。

1. SAP 替代物料不是开关,是一套没被读懂的默认逻辑

一张 100 台的生产订单,A 物料账面只有 45 个,系统却自己补了 55 个 B,计划员全程没改一行数据——这不是系统抽风,是 BOM 里那个蓝色小箭头在起作用。SAP 替代物料长期被当成"高级配置",实际上它是 PP 日常里最容易被忽略的一块:配对了叫省事,配错了叫灾难,而多数人卡在不知道去哪看、该看哪个字段。这份手册按五类替代场景把事务码、主数据字段、BOM 参数和验证方法摊开写,适合天天跑 CO01、CS02 的计划员,MM 与 PP 交叉岗的顾问,以及接手别人配置、只能对着报错反推原因的人。

2. 五类替代形态的选型:平行切换、后继物料、后继组、比例拆分、连续替代

2.1 平行切换与非平行切换,差的是谁听谁的

先把这个概念掰开。平行切换指的是同一组里的几个替代品地位对等,谁有库存就用谁,用量按使用可能性摊开分;非平行切换(也就是连续替代)指的是排队,A 用完才轮到 B,B 用完才轮到 C,中间有严格的先后顺序。前者适合多供应商、同规格不同料号的情况,后者适合新旧料号过渡、旧料还在消化库存的阶段。

这里有个反直觉的点,也是新手最容易踩的地方:纯靠 BOM 替代组做平行切换时,系统在 MRP 层面上始终认为排在前面的那个物料是"最适用物料"。哪怕 A、B、C 三个料全都没有库存,MRP 依然会给 A 跑出采购或生产需求,不会自动往下找 B 和 C。这不是系统 bug,是替代组的定位决定的——替代组解决的是"生产订单怎么消耗库存",不解决"MRP 该买什么"。所以在 A、B 长期不用的场景里,继续留着替代组反而是一种负担,每个 MRP 周期都要人工去解释为什么又冒出 A 的需求。更干脆的做法是用 BOM 的更改编号加生效时间来切换,让旧料号在某个日期之后直接从有效 BOM 里消失。

我在实际项目里一般这样判断:如果两个料号在未来半年内会并行消耗,用替代组;如果一个料号已经准备退市、只是还有一点尾料要吃掉,用更改编号加生效时间;如果新旧料要按固定比例投料(比如两家供应商各占一半),用使用可能性按比例拆分。三种手段的目的不同,混用就是给自己挖坑。

2.2 五类做法对照:从触发条件反推该用哪一种

选型的时候不要从事务码出发,要从"切换由什么触发"出发。触发条件定了,配置路径基本就唯一了,剩下的都是字段填错的问题。

做法核心事务码关键字段切换触发条件MRP 表现适用边界
批量换料CS20旧物料号→新物料号改完立即生效只跑新料需求旧料彻底消亡,不留尾料
只消耗不采购MM02 + OMS4物料状态 02、安全库存人工判断仍跑旧料需求过渡期,需要计划员盯
两个物料后继MM02 + CS01MRP4 非连续标识 1、后继物料、可用性检查 02旧料库存为 0旧料优先严格限定两种物料
物料后继组MM02 + CS02非连续标识 1/3、中止组、后继组组内主物料库存为 0,整组切组内主物料优先一组对一组,可含多个组件
按比例拆分CS01替代组、策略 1、使用可能性不切换,按比例分按比例跑需求同质不同料号,可多个
连续替代CS02替代组、策略 2、优先级、可用性检查 02按优先级逐个耗完优先级最高者优先面最广,替代数量不受限

这张表里最容易被低估的是最后一行。连续替代的实现方式和前几种长得像,都是 CS02 里点蓝箭头填对话框,但它的行为完全不同:每次只消耗当前优先级物料的库存,耗完了才跳到下一个,而不是像后继物料那样累加扣减。很多人把这两种当成一回事,结果下了一张 300 的订单,系统只认 200,剩下 100 卡在那里下不了达,翻遍配置找不到原因。

2.3 非连续标识的三个值,决定了系统往哪个方向找料

MRP4 视图里那个"非连续标识"字段,是整个替代体系里信息密度最高的一个输入框。填 1 表示这个物料是单一平行中断的主物料,也就是组里的"触发器",它自己带着一个后继物料,库存一旦归零,整组跟着往下走;填 3 表示这个物料是相关平行中断的从属件,它不自己触发切换,而是跟着组里那个填 1 的物料一起走,所以后继物料字段必须留空。

留空这一步是关键。有人在从属件上也填了后继物料,系统就认为这个物料有两条替代路径,组关系直接乱掉,测试的时候可能只切了一半,看起来像玄学,其实是配置冲突。还有一种情况是用到标识 2,含义是相关平行中断并且自身也带后继物料,常见于组内多个组件各有各的后继件的复杂场景。两种物料互替这种简单需求用不到 2,但知道它存在,看别人配置的时候就不会一头雾水。

另一处不能漏的是 MRP3 视图的"可用性检查"。这个字段不设 02,生产订单在创建和下达时根本不去检查库存够不够,系统会把 A 按全额下进去,一直到发料环节才报库存不足。也就是说,替代动作是在可用性检查那一刻发生的,检查没开,替代就没有发生的机会。我见过最典型的现象是:订单能下 300,发料时缺 100,仓管和计划员互相甩锅,最后发现问题在 MRP3 那一个空白字段上。

3. 两个物料的后继替代:从 MM02 到 CO01 的完整推演

3.1 主数据四件套:非连续标识、后继物料、可用性检查、工作计划视图

这是最容易照抄的一类配置,步骤不多,但每一步漏掉都会让整条链路断掉。先建两个物料,假设原物料 66000037,后继物料 66000036,都建在同一个工厂下。

第一步,MM02 进 66000037 的 MRP4 视图,把"非连续标识"设成 1,"后继的物料"填 66000036。这一步定义了谁被谁替代。注意方向不能反,填反了系统会认为新料要切回旧料,测试时表现为怎么都不切换。

第二步,MM02 进 66000037 的 MRP3 视图,把"可用性检查"设成 02。这一步是整条链路的总开关,没有它前面所有配置都是摆设。

第三步,两个物料的工作计划视图都要维护好,工艺路线、工序该有的都得有,否则 CO01 创建订单时会直接报错,连替代的入口都走不到。

第四步,CS01 建 BOM,原物料和后继物料都作为组件挂在同一个抬头物料下,用量保持一致。

这四步做完,主数据侧的活儿就算齐了。剩下的是库存和订单验证,那才是真正能看出配置对不对的地方。

提示:后继物料本身不设非连续标识,它只是被指向的一方。给后继物料也设 1,会形成一条意外的链条,测试时会看到意料之外的二次切换。

3.2 BOM 与工艺路线的配套:为什么订单下不出来

BOM 这一层看着简单,其实藏着条件。常规做法是把 A 和 B 都放进同一个 BOM,用量相同,这样系统在做可用性检查时才有得选。如果两个物料的单台用量不一样,比如 A 用 2 个、B 用 3 个,光靠非连续标识就不够了,还得在 BOM 项目里做替代组和使用可能性的设置,把换算关系表达清楚。

这种用量不等的场景,我的建议是别在这条路上硬啃。两个物料的后继替代本质上是"1 对 1、等量替换"的简化方案,一旦涉及用量差异,配置复杂度会陡增,而收益并不明显。同样的需求用按比例拆分或者直接改 BOM 反而更干净,逻辑一眼能看懂,交接给别人的时候也不用写三页说明。

工艺路线那边的要求更朴素:该有的必须有。生产订单在创建时会去读工艺路线和工序,读不到就报错,报错信息通常和物料替代毫无关系,很容易把人带偏到别的方向排查。所以做替代测试之前,先用一个普通物料跑通一张完整订单,确认工艺路线本身没问题,再去动替代配置。这个顺序能省掉大量"到底是替代没配对还是订单本身有问题"的纠结。

3.3 CO01 实测:100 个需求怎么拆成 45 加 55

配置对不对,跑一张单就知道。用 MIGO 做两笔收货:66000036 收 100 PC,66000037 收 45 PC。然后 CO01 建一张生产订单,成品生产数量 20,单台用量 5,原材料总需求 100 PC。

物料角色主数据关键设置库存总需求检查后实际分配
66000037原物料 A非连续标识 1,后继物料 66000036,可用性检查 024510045
66000036后继物料 B无需非连续标识100—55

下单之后点击物料可用性检查,系统会发现 A 只有 45,缺口 55,于是自动往后继物料 B 要 55。整个过程不需要人工调整组件清单,CO02 进去看组件行,能看到两行物料各自的确认数量。这就是所谓"累加扣减":A 有多少先吃多少,不够的部分顺延到 B,而不是像连续替代那样一次只能动一个料。

还有一层要注意,这套机制只对两种物料有效。三个及以上物料的接续替代,用这个方法配出来要么只切一次,要么直接报错,因为非连续标识的语义就是一对一的。三个料的情况走连续替代,配置在 CS02 里,用优先级排队,行为也更符合直觉。

MD04 那边同步看一眼,能看到 A 的需求被消耗完、B 的库存下降,两边数量加起来正好等于订单总需求。如果加起来不等于总需求,八成是 BOM 里两个物料的用量没对齐,或者计量单位不一致导致换算偏差,这两种都在测试阶段就能发现,不用等到发料。

4. 后继组与按比例拆分:整组切换和 5:3:2 分配怎么落地

4.1 中止组与后继组的配对:一个字母决定成败

后继组解决的是"一组物料被另一组物料整体替换"的问题,典型场景是一块主板套件里有四个组件,前两个是旧方案,后两个是新方案,只要旧方案的主件没库存了,整组一起切到新方案,不管旧方案的另一个件还有多少库存。这种"要么全切要么不切"的行为,是单物料后继替代做不到的。

设定上分两块。主数据侧,MM02 进 66000031 的 MRP4 视图,非连续标识设 1,后继的物料填 66000034;MM02 进 66000032 的 MRP4 视图,非连续标识设 3,后继的物料必须留空。这里 31 是触发器,32 是跟随者,一主一从,缺一不可。

BOM 侧,CS02 进抬头物料 66000033,双击 66000031 那一行的数量进入项目明细,点"终止数据",在中止组里填一个代码,比如 A;66000032 同样处理,也填 A。然后回到 66000034 的项目明细,点"物料后继数据",在后继组里填 A;66000035 同样填 A。两个组代码必须严格一致,写成一个 A 一个 B,系统就认不出这是一对,测试时表现为完全不切换。

注意:如果项目行上已经设过替代项目组,进入项目明细后"终止数据"按钮会变灰点不动。这时候要先把替代项目组清空,再设中止组,两个功能在同一行上是互斥的。

配完之后验证一下:CS02 进 BOM,菜单里找附加下的终止信息,能看到系统识别出的组关系。这个界面比翻配置快得多,一眼就能看出哪几个物料被归到了一组。

测试数据可以这样摆:66000031 库存 0,66000032 库存 100,66000034 库存 200,66000035 库存 300。下 100 台的生产订单,四个组件各需要 200。做物料可用性检查后,31 和 32 整组切到 34 和 35,即使 32 手上还有 100 的库存也不会单独被消耗。这个结果就是后继组和单物料后继最本质的区别——后者会尽量把现有库存吃干净再切,前者是主件一断,全组立刻转向。

顺带说一句,四个组件也可以挂在同一个 BOM 里统一维护,只要中止组和后继组的配对关系不错,效果是一样的。分组维护的好处是可读性强,坏处是配置分散在多个项目行上,改的时候容易漏。

4.2 策略 1 与策略 2:优先级到底什么时候才生效

按比例拆分走的是另一条路,配置入口还是 CS01,双击组件行的数量进入项目明细,把几个物料分到同一个替代组里,点替代组旁边的蓝色箭头,弹出对话框,里面有三列要填:优先级、策略、使用可能性。

策略这个字段只有两个值,1 是手工维护、按用途可能性分配,2 是 100% 检查。很多人在这里翻车,原因是把优先级当成排序依据填了一堆数字,结果发现系统压根不理。策略填 1 的时候,优先级不参与计算,系统只看使用可能性百分比,按比例往下摊;策略填 2 的时候才按优先级顺序做可用性检查,一个一个往下找料。

所以在"三家供应商按 5:3:2 供货"这个场景里,策略必须是 1,使用可能性填 50、30、20,优先级那一列填不填都行。而"旧料用完用新料、新料用完用替代料"这个场景,策略得是 2,优先级填 1、2、3,使用可能性留空。

三种情况下系统行为还会变:使用可能性全留空,生产订单里需求量显示 0,做检查时才去找合适的料;三个都填 100,每个都显示全额,检查时再按库存调整;只有一个填 100 其他填 0,默认显示那个 100 的,检查时依然会按实际库存变动。这几种行为都不算错,但会让看订单的人困惑,所以我一般要求填就填成加起来 100 的组合,别留半吊子状态。

4.3 使用可能性之和不是 100 时,系统在算什么

这一块是纯算术,但它决定了订单里的需求数量,算错了直接影响发料。

先看标准场景:三个物料 66000031、66000032、66000034 同属替代组 A,使用可能性分别 50、30、20,生产订单 100 台,单台用 2 个,总需求 200 PC。

物料使用可能性计算式订单需求量
6600003150%200 × 50 / 100100
6600003230%200 × 30 / 10060
6600003420%200 × 20 / 10040

再看和不为 100 的情况。假设 A 填 50、B 填 25,总和 75,系统不会报错,而是按相对比例重新归一:A 的需求等于总需求乘以 50 除以 75,B 的需求等于总需求乘以 25 除以 75。100 的总需求算下来是 66.7 和 33.4,四舍五入之后 67 加 33 等于 100,看起来没问题,但计量单位是 PC 且单台用量是奇数的时候,就会出现总量对不上、欠料的尴尬。

有些顾问会用这种"和不为 100"的写法来表达相对权重,短期测试看不出问题,量产后每月盘点多多少少几十个料的差异,排查起来非常费劲。我的做法是强制要求组内使用可能性之和等于 100,配完在 CS03 里回读一遍确认,不给自己留后患。

按比例拆分还有一处容易忽略:工艺路线必须有。CA01 维护好工序,才有地方承载生产订单,这一点和其他替代方式没有区别,不重复展开。CO01 创建订单时如果系统弹出警告让输入使用可能性,直接回车跳过就行,那是提示不是错误,订单照样能建出来。

5. 避坑与排查:五个让整套配置白做的细节

5.1 主数据侧的三类翻车

现象:CS02 里"终止数据"点不动,灰的。原因是该项目行已经挂了替代项目组或者替代策略,两个功能在同一行上互斥。解决办法是先双击进入项目明细,把替代项目组的字段清空、保存,再回来设中止组。这个顺序不能反,反了就要重来一遍。

现象:生产订单下出去了,做可用性检查后完全没切换,还是全额要原物料。先查 MRP3 的可用性检查是不是 02。这里有个易错点:字段设了但订单没触发检查,同样不会切。CO01 里创建完订单要点物料可用性检查,或者走 CO02 重新做一次检查,光下单一动不动是看不到效果的。还有一种隐藏情况是订单类型对应的检查规则没打开,这个要去后台看检查控制,属于配置层面的事。

现象:整组切换只切了一半,主件切了从件没切。十有八九是从件的非连续标识填错了。从件必须是 3,而且后继物料字段要留空。填成 1 或者顺手把后继物料也填上,系统就认为这个组件有独立的后继路径,不再跟随组切换。另一个可能是中止组和后继组代码不一致,一边 A 一边 B,看着像一对,系统不认。

5.2 BOM 与订单侧的两类翻车

现象:MRP 每周都跑出旧料的需求,新料有库存也消耗不掉。这是平行切换的固有条性,不是配置错误。系统在 MRP 层面永远认为排在前面的物料最适用,替代组只管订单消耗,不管需求生成。旧料已经长期不用的话,正确做法是用 CS20 批量换料,或者用 BOM 的更改编号加生效时间把旧料停掉,而不是继续留着替代组天天人工解释。

现象:订单能下 300,发料时仓库说库存不足。原因还是可用性检查没生效,替代只发生在检查那一刻,检查没做,订单就会按全额往原物料上压。还有一种变体是连续替代场景下超量下单:当前优先级物料只有 200 的库存,最多支撑 100 台,硬下 300 台,系统不会自动跳到下一个料,检查直接给红灯,订单也下达不了。这时候要么拆单,要么按实际库存调整数量,别指望系统帮你越级分配。

6. 批量换料与上线前验证:两个能省掉返工的动作

旧料彻底退市的时候,逐个 BOM 手工改是自找麻烦。CS20 是批量更改物料清单的事务码,输入新旧物料号、工厂、BOM 用途,执行后会列出所有命中的 BOM,勾选需要处理的,点"更换项目",绿色表示成功,红色表示失败。失败的常见原因有四种:新物料没在当前工厂建主数据、新旧物料基本计量单位不一致、BOM 处于冻结状态或者挂了更改编号、命中的是文本项或虚拟件。这四种都不是 CS20 本身的问题,但报错信息不会明说,得自己一条条排。

CS20 只改 BOM 组件,不动工艺路线,也不动物料主数据。换完之后物料状态、安全库存、替代组这些遗留配置还在旧料上,需要另外用 MM02 清理,否则后面做 MRP 还会被旧数据干扰。

改完配置怎么确认真的生效,光靠 CS02 看一遍不够。我习惯跑一段查询把 BOM 里的替代组配置全捞出来对一遍:

" 列出指定 BOM 中所有挂了替代组的项目,核对组号、优先级、使用可能性 SELECT stpo~stlnr, stpo~stlkn, stpo~idnrk, stpo~alpgr, stpo~alprf, stpo~ewahr FROM stpo INTO TABLE @DATA(gt_stpo) WHERE stpo~stlty = 'M' " M = 物料 BOM AND stpo~stlnr = @p_stlnr.

STLTY = 'M'限定物料 BOM,STLNR是 BOM 编号,ALPGR是替代项目组,ALPRF是优先级,EWAHR是使用可能性。跑出来按组号排一下,能立刻看出哪个组的使用可能性加起来不是 100、哪个组的优先级重号。字段名各版本可能有细微差异,SE11 里看一眼 STPO 的字段列表再跑更稳。

从那以后我每次动替代组配置,都强制走一遍 MM03 看主数据、CS03 看 BOM、CO01 开一张小批量订单做可用性检查,三步都过了才算完。配置这种东西,看十遍不如跑一张单,跑一张单不如在测试环境把库存清零再跑一遍。希望帮到你。

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

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

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

立即咨询