SAP MRP独立需求与相关需求:从概念到MD04排查实战
做SAP PP/MM项目这些年我发现一个特别容易把人绕晕的概念就是MRP里的“独立需求”和“相关需求”。这不是个别现象很多刚接手计划模块的同事甚至已经做了一段时间的顾问也会在这两个词上栽跟头明明用MD61建了计划独立需求MD04里也看得到整屏需求数字但车间一按生产订单领料系统里的需求逻辑就跟自己想象的不一样或者销售订单明明有量可MRP就是没有产出对应的采购建议。其实问题往往不在MRP本身而在于没有把“独立需求”和“相关需求”的定位、来源和传递路径想清楚。这篇文章我会把这两个需求类型的来龙去脉讲透顺带把策略组、MD04/MD07/MDVP这些关键事务码的真实用法理一遍再讲几个实施和运维里真正容易踩的坑。适合正在做PP/MM顾问、或者刚接手计划模块的关键用户看也可以直接当团队内部培训和交接材料用。1. 独立需求与相关需求两个看着像、实际上完全不同的“需求”1.1 独立需求不依赖其他物料的需求在SAP的MRP体系里独立需求可以简单理解成“没有上游来源的需求”。它不是由哪个生产订单、哪张BOM展开出来的而是业务端直接提出的、关于某个物料的需求。最常见的来源有两个一个是计划独立需求PIR计划员用MD61按期间创建对应销售预测、生产计划、年度预算另一个是客户需求Customer Requirement也就是销售订单产生的需求系统按订单数量和交货期生成。为什么客户需求也算独立需求因为它的源头在市场和客户端不在企业内部其他物料的生产计划上。PIR的存储表主要是PBIM和PBED有兴趣可以用SE16N直接翻能看到版本号、期间、数量这些字段。MD04里独立需求的行类型会看到类似IndReq计划独立需求和CustOrd客户订单这样的标识具体显示名称和你系统的语言配置有关。打个比方家具厂年初定生产计划说“今年要卖12万张餐桌”这是计划独立需求客户又下了5000张餐桌的订单这是客户需求。这两个都不是因为“椅子的订单”或“木板的库存”才产生的它们是所有后续物料计划的最上游起点。MRP运行的第一件事往往就是把独立需求读进来作为毛需求再去减库存、减在途、减在制算出净需求。1.2 相关需求从上层物料BOM展开出来的组件需求相关需求逻辑上完全不一样它不会由计划员手工创建也不会因为销售预测而单独出现。相关需求是在上层物料有了“生产加工动作”之后通过BOM展开自动生成的组件需求。12万张餐桌的生产计划落到生产订单后系统会对这张生产订单做BOM展开一张餐桌需要4条桌腿、1张桌面板、8颗螺丝于是系统自动生成桌腿、桌面板、螺丝的相关需求。这些需求就是上层生产订单的组件预留记录在RESB表里。RESB是订单预留和相关需求的核心表里面存了预留号、组件物料、工厂、需求量、已发放量、归属订单号等关键信息。MD04里相关需求的行类型通常显示为DepReq紧跟着它的一定有上层计划订单或生产订单。这里有个非常关键的差异相关需求是“跟单”的。上层订单数量改了相关需求的数量在逻辑上会跟着变上层订单取消了相关需求也会消失。所以相关需求天生是动态的、依赖上游订单的而独立需求相对稳定由计划和市场驱动。1.3 两者的核心区别速查把独立需求和相关需求的差异整理成一张表平时做培训或者写蓝图时可以直接抄走对比项独立需求相关需求需求来源销售预测、销售订单、计划独立需求PIR上层物料生产订单/计划订单的BOM展开是否可手工创建可以用MD61等事务码维护不可以系统按订单自动生成生命周期从建号到被消耗/减少/删除相对独立跟随上层订单订单关闭/取消后消失MRP中的角色是MRP的起点驱动物料的净需求计算是组件物料的毛需求来源继续向下牵引采购/生产核心表PBIM/PBEDRESB预留/相关需求MD04行类型IndReq、CustOrd等DepReq典型事务码MD61/MD62/MD63、VA01等CO01/CO02/CO03、MIGO 261我看到很多项目里业务人员容易把两个概念混着用比如“相关需求怎么在MD04里看不到”或者“独立需求怎么被生产订单吃掉了”。先把这张表理解透后面所有排查逻辑都不会乱。2. 需求在MRP中的传递路径销售订单怎么一步步变成车间领料单2.1 一条完整的需求传递链把需求链条完整过一遍整个MRP的逻辑会清晰很多。我用一个最典型的按库存生产场景来描述销售订单创建VA01系统生成客户需求作为成品的独立需求来源之一或者计划员用MD61维护计划独立需求。MRP运行MD01/MD02/MD03读取独立需求与库存、在途采购、在制数量做比较计算出净需求。净需求大于0时MRP按批量规则生成计划订单PlOrd或采购申请PurReq。计划员把计划订单转成生产订单CO40/CO41系统对生产订单做BOM展开。BOM展开后生产订单里的每个组件都会生成一条预留记录也就是相关需求写进RESB表。组件层的MRP再次运行时会把这些相关需求作为组件的毛需求继续向下展开生成组件的采购申请或计划订单。采购件到货后车间按生产订单发料MIGO 261相关需求被实际消耗预留数量减少直至清空组件库存随即转移到上层成品的生产成本中。业务上常说的“需求逐层下传”传的就是这条链。你从成品往下看每一层物料的需求展开方式都会直接影响下一层物料的计划结果。很多顾问排查缺料时只盯着底层采购件看不检查上层订单状态方向就错了。底层没有DepReq却挂着一堆采购申请问题一定在上层不会在底层。2.2 策略组需求来源的“总开关”同样是需求传递不同企业表现却可能完全相反差别就出在物料主数据MRP4视图里的“策略组”Strategy Group。策略组决定了这个物料到底用什么需求作为MRP起点以及销售订单和计划独立需求之间如何互相消耗。SAP标准策略组里和独立需求、相关需求关系最密切的几个是策略组典型名称需求来源适用场景10按库存生产净需求计划计划独立需求PIR为主销售订单消耗PIR预测式生产成品按计划排产11按库存生产大批量计划独立需求PIR为主销售订单消耗PIR适合大批量生产稳定、批量大的行业比如家电、标准件20按订单生产MTO销售订单直接参与MRPPIR不强制按客户订单生产成品不提前入库40带最终装配的计划成品层用PIR销售订单消耗并触发最终组装半成品按预测备库、成品按单装配50按订单生产无PIR销售订单直接驱动不维护PIR项目型生产、定制化设备70按装配生产ATO成品/半成品用PIR组件层用相关需求产品型号多、共用件多的场景重点说下策略11因为很多批量制造企业用的就是它。策略11和10都属于“计划独立需求驱动”MRP首先看PIR数量以这个数量作为成品的毛需求来排产。销售订单来了以后不会直接重新跑出一个新需求而是通过消耗逻辑去减掉对应期间的PIR让总需求既不重复也不落空。这种“先预测、再冲销”的模式非常考验消耗配置消耗区间、消耗模式、带消耗策略任何一个配错就会出现“销售订单和PIR两条线都算需求”的重复计划成品库存越堆越高。做蓝图阶段一定要和计划员确认清楚这个物料的需求源头到底是预测还是销售订单。2.3 计划订单转生产订单时相关需求是怎么生成的很多人问过一个问题计划订单不是也有组件需求吗为什么转成生产订单后相关需求还要再展开一次这里要区分清楚计划订单里的组件需求只是MRP跑出来的“建议结果”用于指导后续采购和排产一旦计划订单转成生产订单系统会以生产订单为准重新根据订单数量、BOM、工艺路线、有效期等条件生成正式的相关需求组件预留。生产订单的预留会跟着订单生命周期走到结束发料、报工、结算都靠这一条条预留。组件数量的计算逻辑标准情况是组件需求数量 订单数量 × BOM用量 ÷ BOM基本数量再叠加上损耗率、报废率等参数。如果BOM里设置了批量大小因子BSFBatch Size Factor这类数量换算逻辑情况就复杂了。在配方型、化工型或联产品行业经常会遇到“原材料的消耗根据BSF来变不根据计划订单数量变”的需求。比如母液按反应釜批次配置每釜投料量固定和最终产出的计划订单数量不是简单线性关系。这种场景下组件需求是由BSF和相关因子计算出来的改动计划订单数量不一定能同步改变原材料需求。这个坑在传统离散制造里少见但在流程行业特别常见做顾问时一定要和业务确认清楚配方模式。3. 实操篇用MD04、MD07、MDVP把需求看清楚3.1 MD04单物料需求清单排查缺料的第一现场MD04是SAP PP/MM顾问用得最频繁的事务码之一。输入物料号、工厂、MRP范围后系统会把该物料的所有库存和需求按时间顺序列出来一眼就能看到独立需求、相关需求、计划订单、生产订单、采购申请这些行项目。排错的第一步一定是看行类型。如果成品行里有CustOrd或者IndReq说明独立需求已经进来了如果成品下面挂着PlOrd或ProdOrd说明MRP已经基于需求生成了对应的生产建议再往下钻到底层物料如果看到DepReq说明上层订单已经展开了相关需求。哪一层断了问题就在哪一层。举个例子底层原料在MD04里只有采购申请没有任何DepReq那问题一定不是采购太慢而是上层生产订单没展开BOM、BOM失效、或者上层订单根本没有下达。继续往下钻一层生产订单会比你在底层反复调安全库存有效得多。这里顺带提一下MD05和MD06。MD05看的是MRP清单MD06看的是计划订单清单。MRP清单适合追踪某次MRP运行后的结果变化计划订单清单适合批量检查计划订单状态。真正做深度排查时MD04打底MD05查MRP痕迹MD06批量处理计划订单三个事务码组合用效率会高很多。3.2 MD07和MDVP从单物料跳到多物料和批量处理只看MD04容易“只见树木不见森林”计划员通常会再用两个事务码做汇总和批量处理。MD07是库存/需求汇总清单可以一次查多个物料、多个工厂的独立需求、相关需求和库存情况适合快速判断“今天到底哪些物料要补货”也适合做MRP结果审核比如检查某类原材料的DepReq总量是否和成品订单数量匹配。计划会上有人问“下周原材料需求大概多少”MD07筛一下比MD04一个个翻快得多。MDVP是计划订单和相关需求的批量处理清单一般按MRP控制者、物料群组等维度批量展示计划订单支持批量转生产订单、批量确认、批量删除。计划员手上有几十上百张计划订单要处理时不用一个个去MD04点直接MDVP按条件筛出来批量操作。这两个事务码很多人用得不多但配合起来非常顺手。我的习惯是MD07看“总量对不对”MD04看“单物料为什么不对”MDVP处理“已经确认没问题的计划订单”。三步下来绝大多数MRP结果异常都能在一小时左右定位。3.3 相关需求的幕后RESB表和生产订单组件清单如果想知道相关需求具体存在哪、怎么核对数量必须会看RESB表。RESB保存的是预留和相关需求记录是生产订单组件需求的事实表。用SE16N进RESB筛选条件通常这样填MATNR输入组件物料号WERKS输入工厂RSART预留记录类型1为预留、2为相关需求不同系统版本显示可能略有差异按F1帮助确认BDMNG需求数量ENMNG已发放/已提取数量实际核对时重点把BDMNG和ENMNG拿出来对比很快能判断这个组件的相关需求是否发完。如果BDMNG有数、ENMNG一直是0说明这张生产订单的组件一直没发料如果生产订单已经报工完成、结算完成但ENMNG还没达到BDMNG就要查是不是用了521之类不关联订单的发料方式把物料发了但没挂到订单头上。生产订单组件清单也可以用CO03看进入“组件”页签能看到每个组件的预留号、需求数量、已发放量、库位等信息。要注意反冲物料Backflush在报工时自动发料相关需求会被自动清算如果设置了反冲但报工一直没做RESB里的需求也会一直挂着造成“系统显示有需求现场其实已经投料”的账实不一致。4. 实施和运维中那些坑需求对不上、库存锁定、冲销异常4.1 相关需求不刷新计划订单数量改了相关需求还按旧数量走生产订单创建完成后组件预留就“冻结”在当前数量。哪怕后来改了生产订单数量相关需求也不会自动重算这是SAP的经典行为不是Bug。正确的做法是在CO02里修改生产订单数量后去菜单“组件”里选择“重新展开”让系统按新数量重新计算相关需求或者取消订单、重新下达。如果修改了数量却忘了重新展开底层物料就会按旧数量继续采购现场领料时才发现数量对不上。更麻烦的是很多企业习惯在计划订单阶段反复修改数量。计划订单的组件需求会随数量自动变但一旦转成生产订单相关需求就固定了。所以排查“底层物料怎么还按旧数量做采购”时第一反应应该是先看上层生产订单有没有重新展开BOM再看组件的MRP有没有跑到。顺序反了越查越乱。这里补充一点个人经验生产订单数量大改、小改频繁的场景建议在流程上约定“生产订单最后一次数量确认后统一做一次组件重新展开再发料”能省掉很多后期扯皮。4.2 MIGO检查导致物料锁定MRP跑不动做MRP最让人抓狂的报错之一就是跑MD01/MD02时提示物料被锁定或者程序长时间卡在某个物料上。常见原因并不是MRP本身慢而是有人在同时做MIGO操作。MIGO在保存前会锁定相关物料如果这张单据一直停在界面不保存也不退出锁就会一直存在。MRP运行到该物料时会被锁等待堵住表现出来就是“MRP卡死了”。排查思路是先看SM12锁表记录找到锁定对象和用户联系对方尽快保存或退出再安排MRP的批量运行窗口尽量避开白天发料高峰最后在制度上规范MIGO单据要么保存、要么退出页面不要长期停留在编辑界面。实际情况里很多所谓“MRP运行变慢”的问题七成以上是并发锁导致的不是系统性能问题。顾问到场第一件事不是调参数而是先查锁。4.3 移动类型261和521的区别别让相关需求“悬在空中”SAP里给生产订单发料最标准的移动类型是261它会直接关联生产订单的组件预留发料时扣减RESB的剩余数量相关需求被实际消耗掉。而521是成本中心领料和具体生产订单没有关系发料后不会扣减任何生产订单组件预留。这个区别在物料管理混乱的现场特别容易出问题。我见过不止一家企业车间图省事用521把原材料从仓库领到车间再按生产订单报工时发现组件需求数量对不上。最后的结果是生产订单的DepReq一直显示没发料、订单成本归集不完整、生产订单无法正常结算。排查时用MB51按移动类型261和521分别查物料凭证和CO03里的组件需求数量做比对能很快定位是哪张单用错了移动类型。如果企业确实需要用521做费用性领料应该在流程、权限、甚至屏幕变式上把这类移动类型和生产订单发料严格区分开避免一线人员选错。4.4 策略组配错导致的重复需求/需求消失策略组配错最典型的症状有两个一种是需求翻倍PIR里建了预测销售订单也直接参与了MRP两边都算需求成品库存越堆越高另一种是需求消失销售订单把PIR消耗掉了但计划员没有意识到PIR已经被冲销以为库存还有预测需求可排产实际MRP结果却为空。两种症状背后问题都出在“谁才是这个物料的需求来源”这个决策上。我建议项目上线前把每个工厂的成品类物料按生产模式整理一份策略组清单哪些用PIR做预测排产哪些用销售订单直接驱动MTO哪些用PIR加消耗逻辑做最终装配。让计划员明确知道主计划需求的源头到底是谁相关需求是跟着哪个上层订单走的。这张清单同时要落到物料主数据MRP4视图的检查上避免同一个物料不同工厂之间策略不一致。排错时也别只盯MD04还要回到需求管理配置里确认消耗模式和消耗区间。配置层面一旦错了MD04里的每一条需求看起来都“合理”合在一起就是不落地。碰需求问题我自己心里有几条固定动作先分清是独立需求还是相关需求再看MD04的行类型然后查RESB和上层订单状态最后才考虑策略配置和批次问题。多数时候问题不是出在MRP不会算而是出在“需求来源没被正确识别”。把独立需求、相关需求这条链子理顺了后面做物料账、做成本分析、做生产结算都会顺很多。最后再分享一个小技巧每次MRP结果有异常时截图保存MD04和MD07的完整画面把行类型、数量和订单状态都留档问题追溯到源头后再回来对照比对着记忆排查可靠得多。