
这两年做过的项目里凡是产品规格相对稳定、但客户订单波动大的工厂十有八九会碰到同一个矛盾销售天天催订单生产又不敢多备货。计划部一合计干脆按预测排产可预测订单一进去客户订单来了又不知道怎么冲减库存和缺料两头难看。其实SAP里早就有一套标准方案就是计划策略40——带最终组装的计划。它属于MTS按库存生产家族但比策略10聪明不少它允许你按预测在成品层排产同时当真实客户订单进入系统后自动把预测消耗掉多出来的需求缺口再通过MRP补算。这篇文章我想把这套策略从原理到配置再到日常计划运行完整拆一遍给PP顾问、生产计划员以及刚入行做SAP配置的朋友一个能直接照做的参考。1. 策略40解决什么问题先理解“预测”和“客户订单”怎么打架1.1 MTS与MTO的边界策略40站在中间很多做生产计划的朋友对“按库存生产”和“按单生产”都有直觉按库存生产就是闷头做做完扔仓库按单生产就是客户下什么做什么做完直接发货。但实际业务很少这么绝对。更多情况是产品的主体结构是标准的只有一部分配置、颜色、型号、包装规格随客户订单变化比如设备制造行业的整机、电子行业的组装成品、机械加工厂的系列产品。如果完全按预测生产风险是客户订单和预测差距大的时候做多了变成呆滞库存做少了交不了货。如果完全按单生产交货期又太长因为从采购、加工到组装整个周期堆起来客户不可能等。这个时候就需要SAP需求管理里的一类中间态策略——允许你在成品层用预测做计划但客户订单进来后又能“顶替”预测让计划量跟着实际订单走。策略40就是这类策略里用得最多的一种它的官方名称“带最终组装的计划”说的就是这个意思计划一直做到成品组装这一层而不是停在上层装配指令或者组件层。1.2 策略40与其他策略的对比为什么不用策略10或策略50刚开始看策略配置的人很容易把10、20、40、50搞混。我习惯用一张表把这几个策略的差异讲清楚尤其是跟业务顾问对需求的时候非常有用策略计划层级预测是否参与计划客户订单是否消耗预测典型适用场景10成品层是纯预测否标准品、需求稳定、备库生产20成品层否按单不适用完全按单生产交期可控40成品层是预测消耗是标准品但有定制、组装配送50组件/半成品层是组件层预测是但驱动成品组装多品种选配、模块化生产60成品层是但不消耗预测否预测与订单并行、项目型备货策略10最大的问题就是预测不消耗。预测100台客户订单来了60台MRP照样把100台的需求和60台客户需求加在一起总需求变成160台计划员天天在MD04里看到一坨重复需求最后只能靠人工状态去判断哪个可用哪个不可用。策略40解决了这个痛点它让客户订单在MRP运行过程中自动消耗对应物料的预测需求总量不会虚高。那有人会问既然要消耗预测为什么不直接用策略50关键区别就在“带最终组装”这五个字。策略40的计划层次放在成品也就是最终组装这个环节BOM从成品展开到组件所有缺料都跟着成品计划走策略50的计划层次放在组件和半成品层成品层不直接做主计划而是等客户订单进来后再触发最终组装。如果你的产品要经过一个明确的整机装配工序而且装配周期相对固定那策略40会更容易管控成品库存和交期如果产品可选配置特别多装配是最后一公里那策略50更灵活。标题既然说的是“带最终组装的计划”我们主要围绕策略40来讲。1.3 核心机制预测消耗Forecast Consumption策略40的核心机制就是预测消耗。简单说系统里同时存在两类需求一类是计划独立需求PIR也就是你手动维护的预测数量另一类是客户需求也就是销售订单进入后产生的需求。MRP跑完后MD04里会出现这两种需求各自的条目。如果预测消耗功能生效客户订单数量会优先“吃掉”同期的预测数量总需求等于两者取大而不是简单求和。举个例子预测7月份生产100台设备维护为PIR客户订单7月交60台保存销售订单后系统有了60台客户需求。MRP跑完如果消耗配置正确MD04中PIR显示剩余40台客户需求显示60台总需求仍然接近100台加上损耗等因素。如果客户订单变成120台PIR被全部消耗多出的20台变成额外净需求MRP会针对这20台再生成计划订单。这样生产计划量始终贴合实际订单和预测中更大的那一个不会虚增库存压力。这个机制对定制化场景特别友好销售订单的交付优先级高于预测所以就算预测不太准只要客户订单按时进来系统会自动修正计划缺料和过量生产都会被压住。但前提是策略配置和物料主数据的相关参数必须匹配否则就变成“预测是预测、订单是订单”两条需求线互不干扰MD04里重复需求一大堆这也是后面要讲的主要排查点。2. 配置前的几个关键概念策略组、需求类型、物料主数据2.1 策略、策略组、需求类型、需求类之间的关系在点开SPRO之前先把需求管理里这几个概念搞清楚否则配置界面看起来全是英文缩写很难下手。我的经验是拿“点菜”来类比策略组就是一张菜单一个物料固定对应一张菜单策略就是菜单上的一道菜比如策略40是“预测消耗”这道菜需求类型是这道菜默认用的盘子它决定了这道需求在MRP里算独立需求还是客户需求也决定了优先级需求类则是盘子的材质决定了这个需求的可用性检查、计划行等等属性。在标准SAP配置里策略组40默认包含策略40策略40又关联了对应的需求类型。用MD61维护独立需求时系统会根据物料主数据里的策略组自动带出PIR的需求类型用VA01创建销售订单时系统也会根据策略组、项目类别等条件带出客户需求的需求类型。只有当这两类需求的需求类型在“消耗逻辑”上匹配预测消耗才会生效。所以配置策略40的时候我建议先跑一遍标准配置的路径看清楚标准内容不要上来就自定义一套。标准策略40在绝大多数业务场景下可以直接用自定义策略通常只在你需要调整消耗期间、消耗标识或者额外需求类型时才需要做。真到那一步也要从标准复制后修改老老实实测试。2.2 物料主数据里哪些字段影响策略40物料主数据是策略生效的最终载体。很多项目上线后策略不生效查到最后都是物料主数据字段没维护到位。和策略40强相关的字段主要有几个策略组Strategy Group这是最关键的一个字段物料主数据里直接填40或者填一个包含策略40的自定义策略组。策略组没填对后面所有需求类型、消耗行为都跑偏。MRP类型MRP Type策略40一般配合MPS主生产计划使用成品设MPS组件设MRP。这样成品层用MD40单独跑主计划组件层用MD01/MD02跑物料需求计划计划层次清楚监控也方便。MRP组MRP Group用于统一控制策略相关的计划参数比如计划时界、批量规则、安全库存策略等。建议按产品族建立MRP组维护起来省事。计划时界Planning Time Fence生产已经锁定或正在执行的时间范围。设了计划时界后时界内的计划订单不会被MRP自动删除或调期对稳定生产非常有用。批量规则和安全库存策略40不等于零安全库存。预测波动大时安全库存能兜底批量规则决定计划订单是否合并也直接影响生产节奏。2.3 S/4 HANA下的差异提醒如果你用的是S/4HANA策略40的配置逻辑和ECC基本一致但界面和运行方式有差异。ECC里传统的MD01总计划在S/4里对应MRP Live计划在内存里跑速度快很多MD04事务代码在老版本还在新版本推荐用新的MRP评估视图或者Fiori的“管理库存/需求”应用。配置路径方面SPRO里需求管理相关的IMG路径基本一致只是S/4里物料主数据的MRP视图字段做了整合比如原来的MRP1、MRP2等视图在GUI里看起来更紧凑但策略组字段依然存在。另外一个S/4容易踩的坑是计划版本。S/4里MD61创建的PIR同样有版本概念MRP默认读取的是版本00如果你维护到了其他版本而忘了做版本激活或调整MRP会一点需求都看不到。这一点新旧版本系统都一样后面实操部分会细说。3. 策略40配置步骤从SPRO到物料主数据3.1 检查策略40定义消耗标识和消耗期间配置入口在SPRO里走生产 - 生产计划 - 需求管理 - 已计划独立需求 - 计划策略 - 定义策略。事务代码很多顾问习惯用OMP2不过你只要记住SPRO路径就行不同版本显示的事务代码可能略有差异。进入后找到策略40Planning with final assembly查看它的参数。核心关注两个地方消耗标识Consumption indicator策略40应该是“消耗预测”的模式表示客户需求可以消耗独立需求。消耗期间分为向后消耗期间和向前消耗期间。向后消耗指客户订单日期晚于预测日期时可以向未来的预测借量向前消耗指客户订单日期早于预测日期时可以消耗过去的预测。期间的单位通常是工作日或天数很多企业设0意思是只在同一个需求期间内消耗跨期间不消耗也有企业设5天或者一个计划周期容错更好。我的建议是如果你们的计划周期是按周做的消耗期间至少覆盖一周如果预测按月做、客户交期又提前那向后消耗期间可以适当放宽比如15天或30天。但也不要放太宽否则客户订单量会跨很多期间去消耗预测导致后续期间预测被掏空MRP又生成一堆补单需求计划反而动荡。3.2 定义策略组并分配策略配置入口生产 - 生产计划 - 需求管理 - 已计划独立需求 - 计划策略 - 定义策略组事务代码常用OMP1。策略组的作用是把一个或多个策略打包分配给物料。标准系统里已经存在策略组40里面应该包含策略40。如果你直接用标准策略组40这一步甚至可以不改但如果你需要策略40和策略50同时给不同物料用或者想给某个产品族单独配置一套组合那就在此自定义策略组。自定义策略组示范输入Z40点击新建添加策略40设置策略的起始期间和优先级。保存后把物料主数据的策略组字段填成Z40即可。这样做的灵活性在于以后想调整产品族的计划策略时只改策略组和相关参数不用逐个去改物料主数据。上线初期我建议先沿用标准组40跑通流程熟练后再考虑自定义减少变量。3.3 维护物料主数据的关键字段用MM02修改成品物料的MRP视图。重点维护以下字段策略组填40或Z40。MRP类型建议填MPS主计划也就是主计划物料。如果你们公司不想分MPS和MRP直接填MRP也可以跑但主计划的管控会弱一些。MRP组填一个按产品族设置的MRP组便于统一维护计划时界和批量参数。计划时界根据生产锁定时间设置比如3天、7天。批量规则建议使用周期批量如周批量或者固定批量减少计划订单拆分。安全库存根据服务水平和历史波动设置策略40下安全库存可适当放低但不是没有。这里特别提醒物料主数据维护好以后如果这个物料之前已经有过PIR或者销售订单建议在MD04里检查一下需求类型是否更新。如果已存在的未清需求还是旧策略下的需求类型可能不会自动切换需要重新确定。最常见的操作是删除旧PIR重建或者用事务代码将需求类型刷新一下。3.4 需求类型确定规则一般情况用标准配置需求类型确定规则在SPRO路径生产 - 生产计划 - 需求管理 - 已计划独立需求 - 计划策略 - 定义需求类型确定。标准系统已经为策略40带好了PIR和销售订单的需求类型绝大多数情况下不需要改。只有当你们公司改了销售订单项目类别、物料“可用性检查”规则或者做了大量自定义拷贝后需求类型才可能对不上。比如销售订单创建后在MD04里看到的客户需求类型不是标准值而是一个其他需求类型这时候才要去需求类型确定规则里补一条项目类别策略组 - 指定需求类型。这个字段组合逻辑比较多建议在测试环境先做几个销售订单验证不要直接在生产环境动。4. 实操全过程从预测到入库到发货4.1 日常计划用MD61维护独立需求事务代码MD61是计划独立需求的主入口。输入成品物料、工厂、版本设置需求期间和数量。标准场景下预测数量按周或按月维护版本用00。创建完成后用MD04查看物料库存/需求清单你会看到一栏“独立需求”或者说“计划独立需求”这就是预测的载体。实操中有一个常见问题预测是分版本管理的比如版本00是销售预测版本01是产品经理额外补充版本02是市场活动临时预测。MRP跑的时候只认版本00吗实际上在MRP组的设置里可以指定读取哪些版本默认情况主要看00。这里我给大家的操作建议是如果你们公司同时存在多套预测约定一个版本作为MRP主版本就好不要让其他版本混入总需求不然MD04里IDOC和预测需求交叉出现计划员会疯掉。创建完PIR后如果之前已经有其他版本的PIR建议先做一次“删除/标记删除”清理或者跑事务代码MD75重新展开PIR确保MRP拿到的需求是最新版本。4.2 运行MPS/MRP计划订单是怎么冒出来的成品配置了MPS后日常跑计划用MD40创建/删除计划订单或者MD02单独跑这个成品然后在MD04里看结果。MPS跑完以后如果成品的计划订单被确认下来再对组件用MD01或MD02跑MRP让系统按BOM展开组件需求。很多新人都看不懂MD04。我建议重点看三块一是“客户需求”行代表实际订单二是“独立需求”行代表预测三是“计划订单”行代表需要采购或生产的需求量。如果策略40成功起作用客户需求会消耗独立需求这样你看到的净需求不会虚高如果策略没起作用MD04里很可能会出现“独立需求100 客户需求60 计划订单160”这种局面。看到这种局面先别急着加库存大概率是策略参数或需求类型没配好。4.3 验证预测消耗创建销售订单看效果做完配置和MD61后最关键的一步是用VA01创建一个测试销售订单数量和预测数量不一致比如预测100订单60。保存后在MD04里刷新检查预测是否被消耗。如果消耗生效PIR数量会从100变成40客户需求显示60总需求维持约100。如果PIR还是100客户需求还是60总需求变成160那就是消耗逻辑没触发。这时按经验优先检查物料主数据的策略组是不是40客户需求的需求类型和PIR的需求类型在需求类型确定规则里是不是同一套消耗逻辑消耗期间是不是设成了0且客户订单日期和预测日期不同期。还可以用CO09做可用性检查看这个物料的库存、预测、订单和可用量之间的关系。CO09能看到一个时间序列的供需平衡比MD04更直观适合给业务部门做演示。4.4 计划订单转生产订单、收货与发货MD04里计划订单确认后用CO40或者CO41批量把计划订单转成生产订单。批量转换时注意筛选物料、工厂、日期区间别把还没确认的计划订单一把梭全转了。转完后用CO02下达生产订单CO11N报工MB31做生产订单收货最后销售订单发货过账整个过程就是标准PP/MM/SD流程。这里我想提醒一个点策略40的“带最终组装”意味着生产订单在成品层做所以成品的BOM和工艺路线必须完整维护。如果BOM不准MRP展开后组件需求就是错的预测消耗再准也没用。上线切换的时候BOM准确性、工艺路线完整性比策略参数本身更能影响最终生产率。5. 常见问题与排查技巧实录5.1 预测没被消耗总需求虚高这是策略40最经典的坑。排查顺序我一般固定死看MD04里PIR和客户需求的需求类型是不是标准预测需求类型和标准客户需求类型。回物料主数据看策略组是不是填了40MRP类型是不是MPS或MRP。检查消耗期间设置。如果设了0预测和订单必须落到同一个需求期间才消耗跨周、跨月的订单都不消耗导致总需求相加。检查MRP运行范围。消耗通常体现在MRP运行后如果只看销售订单保存后的MD04但MRP还没跑某些场景下画面不会立刻变化会让人误以为没消耗。检查PIR版本是否被覆盖。版本00之外的其他预测版本不会被MRP默认读取容易造成“明明有预测但计划里没有”或者“预测和订单共存”。5.2 计划时界内订单被MRP动来动去生产计划最怕的就是计划定了又变。策略40的预测消耗本身已经让需求有一定波动如果计划时界没设好MRP会把时界内的计划订单删了重新生成车间排产就乱了。解决方式是在物料主数据的MRP组里设置计划时界同时在计划订单类型里指定“时界内不允许自动删除/调整”。我见过不少项目MRP类型、策略组都配好了唯独MRP组里计划时界是空白的结果每周都出乱子。时界设多少取决于你们的采购周期和生产周期比如成品组装需要2天、关键物料采购需要7天那计划时界至少设7天甚至可以到10天确保采购端和生产端都有稳定的订单池。5.3 策略改完了旧订单还是老样子有些企业上线后想从策略10切到策略40物料主数据也改了但MD04里历史销售订单还是老需求类型。这种情况不是系统没生效而是需求类型是销售订单创建时确定的已经固化在未清单据里了。策略组改了以后新建的销售订单会带新需求类型但老的未清销售订单需求类型不会自动刷新。处理办法是让用户用事务代码批量刷新或者删除旧销售订单重新创建更稳妥的方案是在切换前通知业务把未清订单处理干净切换后重新确认需求。如果订单实在太多走重新创建不现实可以由ABAP顾问按新需求类型做批量更新但这属于开发处理的范畴上线前要做好测试。5.4 预测消耗太猛后期预测被掏空消耗期间设得太长或者客户订单日期提前太多时系统会把后续若干周的预测全部消耗掉等后期真的订单来的时候预测已经没了MRP又重新补单反而增加计划波动。这种情况不是策略40本身的问题而是消耗期间和实际业务节奏不匹配。我通常建议分两步控制第一消耗期间按“销售订单平均提前期计划周期”设置不要太长第二用MRP组的“计划时界”把近期锁住时界内不允许自动变化。如果公司预测管理水平高也可以把预测拆得更细比如从月度预测拆到周预测这样消耗发生在更准确的期间后期被掏空的问题会缓解很多。5.5 常见问题速查表现象可能原因处理建议预测和客户需求各自存在总需求相加策略组不是40、需求类型不匹配、消耗期间为0且期间不同核对策略组、需求类型、消耗期间PIR存在但MRP未生成计划订单PIR版本不是00、MRP类型不对、物料被排除出MRP检查计划版本、MRP类型、MRP组计划订单频繁变化计划时界为空、预测波动大、批量规则不合理设计划时界、用周期批量、合理调安全库存策略改了但旧订单需求类型不变需求类型是创建时确定的不会自动刷新清未清订单或刷新需求类型转生产订单后组件缺料严重BOM不完整、MRP没有展开组件层完善BOM组件层跑MRP用MD04检查组件需求最后分享一点实操体会策略40配置本身并不复杂复杂的是让预测消耗逻辑和你的业务节奏真正匹配。我在实际项目里不太建议一开始就把所有成品都挂上策略40而是挑一个产品族先试跑两到三个计划周期让计划员用MD61维护预测、用VA01做测试订单定期在MD04里核对预测消耗效果。等验证消耗逻辑稳定了再逐步铺开到其他物料。另外策略40用起来顺不顺很大程度上依赖预测质量如果销售预测长期偏离实际再好的策略也救不了库存。所以别只埋头配系统把SOP流程里的预测评审做扎实才是策略40发挥价值的地基。实际操作中还有个小技巧上线初期把MRP组里的“计划模式”设为“自动创建但不删除计划订单”等计划员对MD04里的结果有信心了再放开到标准模式。这样既能享受策略40的自动计算能力又不至于让一个参数错误把整个计划池冲得七零八落。