简介:《SAP-PP-替代物料操作完全手册》面向SAP生产计划与物料管理从业者、实施顾问及希望厘清替代物料配置逻辑的进阶学习者,聚焦生产订单中物料耗尽后的自动切换、按比例消耗以及后继物料、后继组等常见业务难题。文档围绕平行切换与非平行切换展开,梳理批量更换组件、只消耗不采购、双物料后继替代、物料后继组和按比例拆分等场景,并涉及物料主数据MRP4非连续标识、后继物料字段、BOM终止组与后继组、可用性检查及策略和使用比例等配置要点,同时提示MRP仍按原物料计算需求等易踩坑点,便于读者建立从业务判断到系统配置的完整认识。资源包共1个docx文件,约871KB,内容集中、便于检索和打印查阅。目前已有2553人学习,适合作为SAP PP物料替代专题的案头参考与配置核对清单。
1. 替代不是换料:先把平行切换和非平行切换的账算清
某工厂的 BOM 里挂了三个料号,主料早就停产,MRP 却还在死盯着主料跑需求,计划员每周手工改单,改到怀疑人生。问题不在 MRP 不灵,而在于替代关系根本没有在系统里“注册”过——SAP PP 里的物料替代,本质上不是换一个料号那么简单,而是要在主数据、BOM、订单三层同时立规矩,系统才肯在可用性检查那一刻自动切过去。这份操作手册覆盖的就是这几条路径:CS20 批量换料、只消耗不采购的状态位控制、两料后继替代、后继组整组切换、按比例拆分与连续替代,以及最容易翻车的几个配置点。适合已经能独立维护 BOM 和工艺路线的计划、生产、主数据岗位,也适合刚接手 PP 模块、被“为什么不下订单”和“为什么还是跑老料”折磨过的顾问。
2. CS20 批量换料与“只消耗不采购”:状态位 02、OMS4 与安全库存的三道闸
替代关系里最容易出事的,是“系统认为旧料还活着”。A 换 B 换 C 的平行切换链条,只要 A 的主数据没关、BOM 没改干净,MRP 一定先把 A 的需求跑出来,哪怕 A、B、C 三方库存全是零。所以动手之前要先想清楚走哪条路:是彻底把旧料从所有 BOM 里换掉,还是让旧料“只消耗不采购”,把人工判断的窗口留出来。这两条路的配置位置完全不同,混着用就会出玄学问题。
2.1 CS20:一次替换所有相关 BOM 的组件
CS20 是批量替换组件的事务码,适合“a 物料在公司范围内全面停产,b 物料顶上去”这种一刀切的场景。它跟逐张 BOM 进去 CS02 改的区别在于:CS20 会按筛选条件把所有命中的 BOM 拉成一张清单,逐条执行,执行结果用颜色标出来——绿色成功,红色失败,失败原因通常是 BOM 被锁、有效期冲突、或者该 BOM 里根本没有这个组件。
操作顺序如下:
| 步骤 | 事务码 | 输入内容 | 说明 |
|---|---|---|---|
| 1 | CS20 | 旧物料号、新物料号、工厂、BOM 用途 | BOM 用途不填会漏掉部分 BOM |
| 2 | CS20 | 更改编号(可选) | 填了会生成新版本,旧版本留档 |
| 3 | CS20 | 有效期起始日 | 决定替代从哪一天生效 |
| 4 | CS20 | 勾选“测试运行” | 先看命中清单,不写库 |
| 5 | CS20 | 去掉测试勾选,点执行 | 逐条看红绿灯 |
几个参数要盯住。BOM 用途必须填,很多现场 BOM 同时存在生产用途和工程用途,只填物料不填用途,命中的范围会比你想象的小。更改编号建议填,尤其是产品还在量产、BOM 需要可追溯的时候,生成新版本后老版本还能查,出了问题有后悔药。有效期起始日不要留在默认值上,替代生效日和生产订单的开工日对不上,会出现“BOM 已经换了、订单还带着老组件”的错位。
执行完不要急着走。红色条目逐条点进去看,最常见的失败原因是 BOM 里该组件的“生效日期”区间跟你要替换的区间没有交集,或者该组件挂在替代组里,SAP 不让直接替换。遇到后者要先解除替代组,替换完再重新挂。这一步不做,后面下订单时会看到组件清单里新旧两个料号并排出现,数量还各算一份。
CS20 的边界也要说清楚:它只改 BOM,不动工艺路线,不动主数据,不动已有生产订单。已经下达的订单里带着老组件,需要用 CO02 单独改,或者走重读主数据(CO02 里的“重新读取主数据”功能)。指望 CS20 一把梭把所有在制订单也刷掉,是不现实的。
2.2 物料状态 02 与 OMS4:冻结了 BOM,为什么采购还动
“只消耗不采购”的核心诉求是:BOM 里继续留着 A,生产订单继续能带出 A 的需求,但采购端不许再买 A。原文里的做法是把 A 的物料状态设成 02,然后发现 02 控制的是 BOM、没控制采购,所以还要去 OMS4 看配置。这个坑非常典型。
物料状态不是一个固定含义的字段,它的行为完全由 OMS4 里该状态码对应的业务事务清单决定。同一个“02”,在 A 工厂可能禁掉了 BOM 维护,在 B 工厂可能连采购申请都禁了。所以正确的顺序是反过来的:先在 OMS4 里查 02 这个状态码对哪些业务事务设了“禁止”,再决定要不要用它。
| 业务事务 | 期望设置 | 目的 |
|---|---|---|
| BOM 维护 | 允许或警告 | BOM 不动,仍能带出 A 的需求 |
| 生产订单创建 | 允许 | 在制订单继续消耗 A 的库存 |
| 采购申请 | 允许 | 让 MRP 跑出信号,形成人工确认点 |
| 采购订单 | 禁止 | 采购员无法把 PR 转成 PO |
| 外部采购/收货 | 按需 | 防止绕过订单直接收料 |
如果 02 的配置跟你想要的不一致,别硬套,直接在 OMS4 里复制一个状态码改成你要的组合,再回 MM02 挂到 A 的物料主数据上。现场很多“状态设了没反应”,根子就在这里。另外要注意工厂级和跨工厂级的区别:物料状态在基本数据视图和工厂级视图里各有一份,改错层级,效果只在一个工厂生效,其他工厂照买不误。
2.3 安全库存当预警线,把切换判断交回给人
状态位只能拦住采购动作,拦不住时间。真正需要的是“提前多久知道该切了”,这就是安全库存的用处。把 A 的安全库存设到一个能覆盖 B 物料采购提前期的水位,MRP 净需求计算时会把安全库存算进去,库存一旦掉到线下,系统就会生成补货建议,也就是采购申请。
这个采购申请因为状态位的缘故转不成采购订单,它就变成了一个挂在系统里的信号灯。计划员看到这条 PR,才有人工判断的入口:继续用 A、补采购,还是彻底切到 B、把 A 的余量单独处理。这个设计比在 Excel 里盯库存靠谱得多,因为它走的是 MRP 的标准逻辑,不需要额外开发。
安全库存的水位怎么定,用 B 的采购提前期倒推。B 从下单到入库要 30 天,A 的日均消耗是 20 件,那安全库存至少 600 件起步,再留一点缓冲。设得太低,信号出来的时候 A 已经见底,来不及切;设得太高,PR 天天弹,计划员会直接无视它。
判断做完之后的落地动作有三个方向:改组件清单(CS02)、改物料状态(MM02)、或者改 BOM 加重新跑 MRP(MD02)。这三条路对应三种不同的业务结论,别在系统里做一半就停,半配置状态比不配置更难排查。
3. 两料后继替代:MM02 MRP4 非连续标识 1 的完整链路
两料后继替代是这套手册里配置点最集中的一条路径:主数据三个字段、BOM 一张、工艺路线一条、库存一笔、订单一张,少任何一环都不出效果。它解决的是最典型的场景——A 库存 45,订单要 100,系统自动补 55 的 B,不需要计划员手工拆行。
3.1 主数据三件套:非连续标识、后继物料、可用性检查 02
先说清楚这三个字段各自管什么,因为现场最常见的错误就是把它们当成一个开关。
| 字段 | 位置 | 取值 | 作用 |
|---|---|---|---|
| 非连续标识 | MM02 → MRP4 视图 | 1 | 标记该物料是“单一平行终端”,库存耗尽后触发后继 |
| 后继物料 | MM02 → MRP4 视图 | B 的料号 | 指定切给谁 |
| 可用性检查 | MM02 → MRP3 视图 | 02 | 订单下达时做库存可用性检查,不检查就不替代 |
非连续标识填 1,意思是这个物料是平行替代链条的起点,库存归零后由后继物料接手。后继物料填 B 的料号,方向是单向的:A 指向 B,B 不需要指回 A。可用性检查填 02 是最容易被漏掉的一步,漏了之后的现象是订单照下、组件照带 A、数量照算 100,系统完全不看库存。原文里那句“如果不检查不会替代”,说的就是这个。
创建测试物料时按顺序来:先建 A(比如 66000036)和 B(66000037),两个都要维护基本数据、采购、MRP、工作计划几个视图。B 作为后继物料,它自己的 MRP4 里非连续标识要留空,否则会形成链条,而这条路径只支持两料,三料以上会乱。
3.2 CS01 与工作计划视图:不下这两步,订单根本发不出去
BOM 用 CS01 建,A 和 B 都挂在成品下面,用量按实际填。这里有个前提:这条路径只在 A、B 用量相等时成立。如果 A 用 2 个、B 用 3 个,光靠非连续标识替代出来的数量是对不上的,得回 BOM 里给替代组配使用可能性,那就属于按比例拆分的范畴了,配置复杂度反而更高,不如直接走比例方案。
工作计划视图是第二个高频漏配点。B 物料如果没有维护工作计划视图(生产管理员、工艺路线、准备时间这些),下生产订单时会直接报错,而且报错信息不一定指向工作计划视图,容易查偏。测试前把 A、B 的工作计划视图都维护一遍,五分钟的事,能省两小时排查。
库存用 MIGO 做收货,A 收 100、B 收 45,正好对应“A 够、B 不够”的场景。收货时移动类型用 101,工厂和库存地点要对,不然可用性检查读不到。
3.3 MIGO 到 CO01 的验证链路
配置完了要验证,验证顺序不能乱:
1. MIGO 收货 A=100 B=45 2. CS03 查看成品 BOM,确认 A、B 都在组件清单里 3. CA03 确认工艺路线存在且已释放 4. CO01 创建生产订单,成品数量 20,组件需求 5 PC/件 5. CO01 组件概览,看 A、B 的需求数量 6. 点“可用性检查”,看系统是否自动补足第 4 步里,成品 20 个、单件用 5 个组件,总需求 100。A 库存 100,理论上全用 A。把 A 的库存改成 45 再试一次,系统应该拆成 A 45 + B 55。这个拆法是累加扣减的,不是比例分配——这是两料后继替代和其他替代方式最本质的区别,其他方式都是“不足才替换”,只有这一条是“消耗完再消耗下一个”。
如果第 6 步没反应,按这个顺序查:MRP3 的可用性检查是不是 02、MRP4 的非连续标识是不是 1、后继物料有没有填、BOM 里 B 是不是真的在组件清单里、B 的工作计划视图是否完整。这五项里必有一项没配。
还有一个容易忽略的点:这套设置只覆盖订单创建时的替代。订单已经创建、组件已经确定,后面再改库存,订单不会自己重算,得回 CO02 重新做一次可用性检查。计划员抱怨“库存明明有 B,订单还卡在 A”,多半就是订单创建在前、收货在后。
4. 后继组替代:中止组与后继组为什么必须同名
两料替代解决的是“一对一”,现实里更多是“一组对一组”:主板套件下面挂四个组件,31 和 32 是一组,34 和 35 是另一组,B 组整体接替 A 组,触发条件是 31 的库存归零。这就是后继组替代,配置比两料复杂一档,坑也更隐蔽。
4.1 非连续标识 1 与 3:谁是触发开关,谁只是成员
组替代里,非连续标识不再是统一的 1。触发物料填 1(单一平行终端),组内其他成员填 3(相关平行不连续部分)。这个区别决定了谁有资格当开关。
| 物料 | 非连续标识 | 后继物料 | 角色 |
|---|---|---|---|
| 66000031 | 1 | 66000034 | 触发开关,库存归零则整组切换 |
| 66000032 | 3 | 留空 | 组成员,跟随切换 |
| 66000034 | 空 | 空 | 后继组接收方 |
| 66000035 | 空 | 空 | 后继组接收方 |
32 的后继物料必须留空。填了会怎样?系统会认为 32 也是一个独立的替代起点,于是出现两套触发逻辑打架,测试时表现为“有时候切、有时候不切”,非常难查。这条是原文里明确强调的,我见过有人图省事四个物料全填 1,结果整组切换彻底失效。
4.2 CS02 的中止组/后继组配对与“终止信息”复核
BOM 侧的配置在 CS02 里分两半做,A 组配中止组,B 组配后继组,两边的组代码必须完全一致。
A 组的做法:CS02 进入抬头物料 66000033,双击组件 31 的数量进入组件明细,点“终止数据”,在“中止组”里输入 A。32 同样操作。这里有个前置条件——如果该组件行上已经维护了替代项目组,终止数据字段会灰掉点不进去,必须先把替代项目组删掉。这个灰显提示很不显眼,很多人卡在这一步以为是权限问题。
B 组的做法:同样进组件明细,点“物料后继数据”,在“后继组”里输入 A。34 和 35 都配。两边代码不一致,比如 A 组写 A、B 组写 B,系统不会报错,但替代关系链不起来,测试时就是死活不切。原文里提到被某篇资料误导过,问题就出在这。
配完保存,用 CS02 再进一次 BOM,走菜单“附加 → 更多的 → 终止信息”,能看到系统识别出的组关系。这个查看入口是免费的验证手段,配完必看,比直接下订单试错快得多。
4.3 整组切换的验证:31 库存为 0,32 有 100 也会被切
验证场景按原文给的库存来:31 库存 0、32 库存 100、34 库存 200、35 库存 300,下 100 个成品的订单,每个组件用 2 个,总需求各 200。
预期结果是 31 和 32 整组切到 34 和 35,即使 32 自己还有 100 的库存。这是组替代和单料替代最关键的行为差异:触发条件只看 31,31 归零则整组失效,32 的库存不参与判断。计划员如果按“32 还有货为什么不用”的思路去质疑,说明他没理解触发物料的角色设定。
测试时如果 32 被单独留下来继续消耗,回查两件事:32 的非连续标识是不是 3、32 的后继物料是不是被误填了。这两项任何一项不对,组逻辑都会退化成单料逻辑。
4.4 按比例拆分:策略 1 与使用可能性
组配置里还有一个字段决定替代行为,就是组件明细里的“策略”。它有两个值,含义完全不同。
| 策略 | 含义 | 优先级是否生效 | 典型场景 |
|---|---|---|---|
| 1 | 按使用可能性手工维护 | 不生效 | 多供应商同料号,按比例分摊 |
| 2 | 100% 检查 | 生效 | 串行消耗,用完一个再用下一个 |
策略 1 的场景是“三个料号功能相同,只是供应商或生产批次不同”,BOM 里三个都挂进同一个替代组 A,使用可能性按 50/30/20 填。下 100 个成品、单件用 2 个,总需求 200,系统直接拆成 100/60/40。这时候优先级填了也没用,策略 1 根本不看它。
使用可能性的总和建议凑成 100%。不凑 100% 系统也不会报错,它会按比例归一化计算,公式是:某物料需求量 = 总需求 × 该物料使用可能性 ÷ 组内所有物料使用可能性之和。原文里举的 50% 和 25% 的例子就是这个逻辑,算出来 0.667 和 0.334。问题在于归一化之后可能出现小数,计量单位是 PC 的时候会向上取整或截断,导致总需求对不上,物料短缺。所以别偷懒,凑成 100%。
创建订单时如果三个物料的使用可能性都是 0,系统会弹警告让你输入,回车可以跳过,跳过之后组件需求量显示为 0,做可用性检查时才按库存找料。这个行为容易让人误以为配置没生效,其实是正常的延迟计算。
4.5 连续替代:策略 2 加优先级串行扣减
策略 2 就是连续替代,行为最接近直觉:优先级 1 的物料先用,用完跳优先级 2,再用完跳优先级 3。配置上三个物料都进同一个替代组,优先级分别填 1、2、3,策略全填 2,使用可能性留空。
它的硬约束是可用性检查必须开(MRP3 填 02)。不开的话,订单可以下超过库存的数量,系统不拦,等到发料才报库存不足,那时候订单一堆、交期已定,返工成本很高。
连续替代的一个行为特征要提前跟计划员说清楚:每张订单只能消耗当前优先级物料的库存范围内的数量。优先级 1 的库存只够做 100 个成品,那这张订单最多下 100,想出第二个 100 得等优先级 1 的库存真正归零、系统跳到优先级 2 之后。超量下单会直接报错,订单无法下达。这跟按比例拆分的“一次拆完”是两种完全不同的使用体验,选型时按业务节奏定,不要按配置难易定。
5. 避坑与排查:六条翻车记录
下面六条都是配置现场反复出现的,按“现象 → 原因 → 解决”写,遇到对应症状直接对号入座。
第一条:可用性检查开了,订单还是不替代。现象是订单组件稳稳带着 A,数量按全额算,点可用性检查毫无反应。原因是 MRP4 的非连续标识没填或填错,系统不认为这个物料有后继关系,自然不会去找 B。解决是把 A 的 MRP4 非连续标识改成 1、后继物料填 B,保存后重建订单再测。改完老订单不会自动更新,必须新建。
第二条:整组切换失效,32 被单独留下继续消耗。现象是 31 归零后,34 和 35 切过来了,32 还挂在组件清单里。原因是 32 的非连续标识填成了 1 或者它的后继物料被误填了值,系统把它当成了独立触发点。解决是把 32 改成 3、后继物料清空,重新保存 BOM 后再测。这个错误在复制物料时特别容易发生,从一个已经配好的物料复制过来,字段全带过来了。
第三条:中止组字段灰显,点不进去。现象是 CS02 组件明细里“终止数据”按钮是灰的。原因是该组件行上已经挂了一个替代项目组,两个功能互斥。解决是先把替代项目组删掉、保存,再回来配中止组。删之前确认该 BOM 没有在用替代组做比例拆分,否则会把已有逻辑一起拆掉。
第四条:中止组和后继组都配了,就是不联动。现象是两边字段都填了,CS02 里看“终止信息”却什么都没有。原因是两边组代码不一致,A 组写 A、B 组写 B,或者一边大写一边小写。解决是把两边改成完全相同的代码,包括大小写。这个错误没有任何报错提示,只能靠人工核对,配完必看“终止信息”就是为了抓它。
第五条:批量换料之后,订单里新旧料号并排出现。现象是 CS20 执行成功、BOM 也换了,下订单时组件清单里 a 和 b 各一行。原因是被替换的组件原来挂在替代组里,CS20 跳过了替代组内的组件,或者替换后没解除原有的替代关系。解决是回 CS02 检查该组件的替代组字段,清空后重新维护;已经在制的订单用 CO02 逐张改,或者走重读主数据。
第六条:比例拆分算出小数,发料时短缺。现象是按 50/30/20 拆完,需求量出现小数,发料时差一两个。原因是使用可能性之和不等于 100%,系统做了归一化,再按计量单位取整。解决是把组内使用可能性凑成 100%,或者改用整数比例(比如 5:3:2),把小数问题挡在配置阶段。计量单位是 PC、EA 这类离散单位时尤其要注意,KG、L 这类连续单位影响小一些。
6. 验证与收口:用一套三视图自检替代关系
配置做完别急着交付,我一般的习惯是走一遍三视图自检,十分钟能挡掉后面两周的返工。
第一视图看主数据。MM03 进 A 和 B,MRP3 的可用性检查、MRP4 的非连续标识和后继物料、工作计划视图是否完整,四个点逐一对。漏工作计划视图这条,新手踩得最多,而且报错信息不指向它。
第二视图看 BOM。CS03 确认组件清单里有几个料号、挂在哪个替代组、策略是 1 还是 2、使用可能性加起来是不是 100%、中止组和后继组代码是否一致。再用“附加 → 更多的 → 终止信息”复核一遍系统识别出的组关系,这一步比肉眼核对字段可靠。
第三视图看订单。CO01 建一张小批量测试订单,故意把主料库存设成不够,走一次可用性检查,看系统拆出来的数量跟手工算的对不对。三种替代方式拆出来的结果形态不一样:两料后继是累加扣减,比例拆分是一次按百分比分完,连续替代是按优先级串行、每次只吃一个料。数量对不上,说明配置方式选错了,不是参数填错了。
可以用下面这张表做交付前的检查清单。
| 检查项 | 事务码 | 通过标准 |
|---|---|---|
| 主数据完整性 | MM03 | 四个字段齐全,工作计划视图已维护 |
| BOM 组件与替代组 | CS03 | 组件齐全,组代码一致 |
| 组关系识别 | CS02 附加菜单 | 终止信息能列出完整组关系 |
| 库存与订单验证 | MIGO + CO01 | 拆出的数量与手工计算一致 |
| 缺料分析 | CO24 / CO09 | 无异常缺料,替代未触发告警 |
从那以后我每次配完替代关系,不管多简单的两料场景,都强制走一遍这三视图,尤其是“终止信息”那一步。有次赶项目跳过了,结果中止组代码大小写不一致,测试环境一切正常,生产环境整组不切,查了一整天才定位到。配置类的问题,系统的沉默比报错更贵。希望帮到你。
本文还有配套的精品资源,点击获取