资讯动态

MRP需求与供应数据解析:读懂MD04与MD07,告别缺料困扰

发布时间:2026/9/13 2:40:54 来源:尧图企业网站定制
前几天有个做生产计划的朋友发来一张MD07的截图问我为什么系统显示缺料但仓库明明堆着货我看了眼那行数据库存确实不为零但全部挂在质量检验库存Q库存下。在SAP这类ERP系统里MRP的供需逻辑从来不是“有货就能用”而是要把可承诺、可覆盖需求的供应量算明白。做了这些年SAP实施和运维我的体会很深MRP需求与供应数据的解析是计划员、物控员甚至成本会计最容易栽跟头的地方也是企业上ERP后到底能不能真正跑起来的关键。这篇内容我就从业务视角把MRP需求与供应数据这件事彻底拆开讲透。1. MRP的核心不是算数是先把“需求”和“供应”定义清楚1.1 需求端都有哪些数据很多刚接触MRP的人以为需求就是销售订单。其实在SAP里需求端的数据远不止销售订单这么简单至少包括四类计划独立需求PIR、相关需求、预留和销售订单需求。计划独立需求通常来自销售预测或者SOP销售与运作计划用事务码MD61创建。它代表的是“在没有具体客户订单之前我准备生产多少”是一种预测性质的毛需求。相关需求则是由上层物料的生产订单或计划订单展开BOM后自动产生的组件需求比如成品计划生产100台BOM里每台用2个电机就会产生200个电机的相关需求。预留则是从库存里预先“锁定”给某张订单或某个成本中心的数量常见于维修领料、研发领料。销售订单需求在按单生产MTO策略下会直接作为需求源驱动MRP而在按库存生产MTS策略下它往往先去冲减计划独立需求。这里有个新手特别容易忽略的点在MRP运算时不同策略组决定了销售订单和计划独立需求谁先被消耗。以常见的策略组11为例它是按库存生产MTS的净需求计划策略系统会先看计划独立需求再拿销售订单去消耗它。所以你看到销售订单增加后MRP可能并没有立刻产生新的计划订单原因往往就是PIR还没有被消耗完——这不是系统出错了而是策略逻辑本来就这样。1.2 供应端都有哪些数据供应端容易被理解成“库存在途采购”其实在SAP的MRP视图中供应端的构成要完整得多。首先是库存但要注意这里说的库存不是所有的库存状态都能用。非限制使用库存Unrestricted-use会参与MRP可用量计算而质量检验库存、冻结库存、在途库存的处理方式则要具体看配置。其次是计划订单它是MRP运行后系统自动生成的供应建议还没有正式成为采购或生产指令。再次是采购申请和采购订单采购申请是尚未转成采购订单的内部需求单据采购订单一旦发出就会在MD04里作为供应显示。最后是生产订单已经下达的生产订单对应着明确的产出数量和产出日期是最“硬”的供应来源。另一个容易忽视的供应来源是STO库存转储订单。当工厂A从工厂B调拨物料时需求工厂会生成一笔类似采购订单的转储单供应工厂这边会看到一个对应的交货需求。MRP会把STO的转储数量视为供应但在多工厂场景下如果两侧计划参数不一致很容易出现需求工厂和供应工厂对同一批物料重复计划的情况。1.3 需求与供应如何形成闭环MRP的运算逻辑本质上就是“需求减去供应得到净需求”。供应覆盖需求后还有剩余就是可用库存需求减去供应后还有缺口就会触发MRP生成新的供应元素。举一个最直白的例子某成品下月预测需求1000件当前非限制库存有200件在制生产订单还有500件那么MRP计算下来净需求是300件。系统会根据物料主数据里的批量规则批量大小来决定是直接生成一张300件的计划订单还是凑整到500件生成一张计划订单。这一步跑完后计划订单又会通过BOM展开产生下一层物料的相关需求由此一层层向下传递直到最底层的原材料和采购件最终生成采购申请。这个过程听着简单但一旦需求端、供应端任何一个数据口径出了问题后面所有层级的计划都会跟着错。所以我在做项目时经常和客户强调MRP跑得准不准从来不是算法问题而是数据质量问题和业务规则定义问题。2. 从MD07到MDVP两个最常用的需求供应总览怎么读2.1 MD07是“覆盖清单”不是“缺料清单”MD07的中文名一般叫“物料覆盖清单”英文是Material Coverage List。它做的事情是把某个物料在未来的若干个时间段里把累计供应和累计需求放在一起对比算出覆盖天数和短缺数量。很多人把MD07当成缺料报表来用这是不对的。MD07的视角是“在某个时间点之前我的供应到底够不够用到那个时间点”它更强调的是覆盖能力而不是简单看某个日期的净需求。比如一个物料在1月10日到1月20日之间需求集中但只要1月5日有一大批采购到货MD07里显示的覆盖情况可能就是“绿色”代表这段时间整体上不缺料。实际使用MD07时我建议重点关注三个字段短缺数量、覆盖天数、重计划日期。如果短缺数量长期大于零那就要去看对应的采购订单或计划订单是否已经存在如果覆盖天数明显短于供应商的正常交期那说明供应策略需要调整。还有一个很常见的坑执行MD07时库存地点的选择会影响计算结果默认情况下可能只统计了部分仓库导致结果偏悲观。所以在跑之前先确认工厂和库存地点范围选择正确。2.2 MDVP其实是“按人排班的总览”MDVP的事务码我经常开玩笑说它这是给MRP控制者MRP Controller量身定做的“值班表”。如果你在SAP里维护了MRP控制者那么MRP总览MDVP可以按控制者维度一次性展示他名下所有物料的需求、供应、库存和净需求。MDVP的核心价值在于“扫一眼就能定位问题”某个控制者名下有300个物料打开MDVP后哪些物料有短缺哪些物料有异常比如出现了负库存哪些物料有冗余库存全部在一屏之内列出来。所以它是计划员每天早晨开完晨会后最值得跑一遍的清单。使用MDVP时有个筛选技巧不要一上来就全量跑所有物料可以先按“例外信息组”过滤比如只看缺料、只看逾期、只看计划订单未下达的。这样能把有限的时间花在最需要跟催的物料上。如果发现某物料在MDVP里显示的净需求很大但MD07里又显示覆盖正常那通常是因为两个事务码的时间范围和批次规则不同需要在同一个时间口径下对比才能定位真实问题。2.3 策略组11和PIR的消耗逻辑策略组11在企业里出现频率非常高它代表按库存生产的净需求计划策略。它最核心的业务语义是我先根据销售预测建好计划独立需求作为MRP的输入然后销售订单进来后再拿销售订单去冲减计划独立需求。这种冲减逻辑带来的一个直接后果是销售订单增加了但MRP不一定马上产生新的计划订单。因为系统会先看还有没有剩余的PIR可以消耗只有当销售订单量超过剩余PIR时才会产生超出的净需求。很多计划员第一次遇到这个现象时都以为系统坏了其实不是而是PIR的消耗逻辑在起作用。在实际项目里我见过很多次因为PIR维护不规律导致的“要么高库存、要么急缺料”的怪象。比如销售预测每个月都随便填PIR大得离谱MRP就会一直生成计划订单库存越堆越高。反过来如果PIR建得太少销售订单一多立即触发缺料。所以策略组11用得好不好很大程度上取决于企业是否有一套靠谱的预测和PIR维护流程而不在于SAP本身。3. 供应数据里那些最容易看走眼的地方3.1 为什么质检库存不能被当成可用量继续说我开头那个朋友的例子。他在MD07里看到库存不为零但MRP还是提示缺料点进去一看200件全部是Q库存Quality Inspection质检库存。在SAP的MRP可用量计算里默认参与计算的是“非限制使用库存”。质检库存本质上是“暂时还不能用”的库存它要等到质检完成、通过移动类型321或者质检决策UD转成非限制库存后才会进入可用量。如果系统里设置了质检库存不纳入MRP那么哪怕质检库里堆了几万件货MRP照样会跑出采购申请来。这个逻辑从生产控制角度看是合理的但业务上经常引发抱怨。解决方案不是去改MRP可用量规则而是要在流程上缩短质检周期、及时做质检决策、及时执行转储过账。另外还要注意有的企业把质检库存设置为“参与MRP”这种做法的风险是如果质检没通过这批库存根本不能用但MRP已经把它当成供应覆盖需求了最后计划订单不会生成等到真正生产时才发现无料可用。所以一般情况下我建议保持质检库存不参与MRP用流程保证账实一致。3.2 521、311、101这些移动类型到底影响了什么搞MRP移动类型是绕不开的基础知识。因为每一次库存过账或者货物移动都会直接改变MRP里面的供应和需求记录。101是采购订单收货货物从供应商发到工厂增加非限制库存同时把采购订单的未清量清掉MRP里对应的供应行就消失了。261是生产订单发料也叫投料把原材料从仓库发到生产订单库存减少生产订单的组件需求预留被消耗。521是生产订单收货成品从生产订单入到仓库生产订单的产出被确认库存增加。311是工厂内从A库位转B库位的转储这种移动不改变总库存但改变了库位维度的可用量。移动类型看似小事但它直接影响MD04里的供需行。比如一张生产订单已经投料了100件但你做冲销用262时冲错了订单就会导致生产订单预留重新打开MRP会当成需求还在继续补料。再比如311转储没有做工厂A说缺料、工厂B说爆仓其实只是库位数据没同步。对计划员来说我建议每个月至少核对一次“库存总账”和“物料账”重点看非限制库存、质检库存、冻结库存三个状态以及101、261、521这几个高频移动类型的发生笔数和金额是否合理。3.3 STO、跨工厂需求与MRP供应STOStock Transport Order在多工厂企业里非常常见。它的本质是在两个工厂之间做库存调拨但在系统里它长得像采购订单需求工厂创建STO供应工厂根据STO做发货需求工厂做收货。在MRP视角里STO有一个特别容易误解的地方它既是需求工厂的“供应”又是供应工厂的“需求”。对需求工厂而言STO的到货数量是供应会参与净需求计算对供应工厂而言它需要通过交货单可能是DN的创建去满足STO的交货需求而这个交货需求在供应工厂的MD04里是以“转储订单交货STO delivery / 需求类型U”的形式存在的。这就导致一个问题如果需求工厂和供应工厂的MRP跑法不一致或者两边物料主数据的提前期差异很大很容易出现“都在等对方下单”的死锁状态。比如需求工厂创建了STO但供应工厂没有及时产生对应的交货安排需求工厂以为有货在途供应工厂却根本不知道要发货。解决这个问题关键是要在流程层面明确STO的响应机制和交期计算规则同时在MD04里盯着转储需求是否被转成了交货单。4. 把需求供应跑起来MRP运行参数与MD04的一天4.1 三种运行方式MD01、MD02、MD03怎么选MRP的运行方式有三种MD01是全厂总运行MD02是单物料单层计划MD03是单物料多层计划。它们听起来像同一个功能的不同档位实际上适用场景完全不同。MD01适合定期做全盘重算比如每天晚上跑一次全厂MRP把所有物料重新算一遍。优点是结果完整缺点是耗时长、系统压力大而且如果数据质量不过关跑完可能到处都是异常信息。MD02是只跑单个物料并且不向下展开BOM常用于日常单物料跟踪比如发现某个成品缺料用MD02看它的净需求是否正常但不会去算它下面的组件。MD03则不同它会沿着BOM一层层往下跑把该物料的所有下级需求全部重算出来适合针对某个相关需求集中的元件或原材料做“爆炸式”检查。我在项目里的习惯是日常追料用MD02针对BOM变更或异常物料用MD03全厂性的MRP跑批放在晚上用MD01。如果不是做全厂重算尽量不要随便开MD01否则大量旧计划订单被删除重建邮件通知满天飞业务部门会被异常信息淹没。4.2 MRP参数里的几个关键开关MRP运行参数里最核心的几个开关一定要会配否则跑出来的结果会让你怀疑人生。首先是处理代码NETCH是自动重估系统会重新计算所有相关物料NETPL是计划内物料才处理适合只跑那些纳入计划的物料NEUPL是重新计划不管之前有没有计划过全部重新处理。其次是创建采购申请标志每个MRP控制者都可以配置是“创建采购申请”还是“只创建计划订单”如果配错了采购件就不会生成PR后面的采购流程直接就断了。还有一个容易被忽略的是“删除并重新创建”标志。正常情况下MRP跑批时会保留已有的计划订单只更新日期和数量但如果某个计划订单已经被人为改过比如手工改了数量系统可能默认“不覆盖”下次跑完MRP你会发现它还是老样子。这就是很多计划员问“为什么我改了计划订单数量跑完MRP又变回去了”的反向原因。还有计划时界Firming Period它决定了在某个时间范围以内的计划订单会被固话不参与MRP的自动删除或修改。时界设得太长MRP对近期需求不敏感设得太短计划订单频繁变动采购和生产都会被搞晕。这些参数大多在MRP组的配置里维护实施阶段就要根据企业的实际业务节拍定好。我见过很多项目上线后MRP跑得乱七八糟最后查了半天问题就是出在“删除并重新创建”这个标志上。4.3 MD04判断供需是否平衡的关键一行MD04库存/需求清单是计划员最常用的“单物料供需透视镜”。很多人打开MD04只扫一眼最上面的净需求但真正有价值的是看每一行MRP元素的详细信息。一个健康的MD04应该是这样的在每一个需求行的下面或者附近能找到对应的供应行去覆盖它。需求来源可能是客户订单、计划独立需求、生产订单预留供应来源可能是库存、采购订单、计划订单、生产订单。你要检查的不是总数对不对而是“日期对不对”。如果供应行的可用日期在需求行的需求日期之后哪怕数量够业务上仍然缺料。这种情况在MD04里表现为“可用数量”是负数或者系统在例外信息里提示“逾期”。我经常在排查缺料时教客户一个“三段式”看MD04的方法第一先看最上面的现有库存数量确认可用库存是否正常第二看最近的需求行和最远的供应行确认有没有“时间倒挂”第三检查每一个计划订单和采购申请的状态是否已经审批、是否已经发出。只要在这三步里有一处异常就能快速锁定问题节点而不是坐在电脑前一通乱补。5. 为什么MRP数据会“跑不通”业务和系统双层排查5.1 数据没跑通最常见的几个原因很多企业上完ERP之后MRP跑了两三个月就“跑不动了”线上生产计划基本靠人肉Excel。以我见到的案例来看原因通常不在系统而在几个最基础的数据点上。物料主数据是第一个重灾区。MRP类型没维护、批量大小没维护、策略组选错、计划时界设错任何一项缺失都会导致MRP计算结果异常。特别是MRP类型为ND不计划的物料哪怕它已经出现在BOM里MRP也不会给它跑出任何结果。BOM有效性是第二个高频问题BOM没发布、有效期没设置对、替代物料没维护都会让相关需求算不到底层的采购件上。工艺路线缺失是第三个问题生产订单根本没法下达或者无法报工。还有一个容易被忽略的是财务和后勤的断层。比如物料分类账没有开物料账跑完成本不对生产订单无法结算最后业务部门只能“先干活再补单”导致MRP的供需数据彻底失真。我在之前的排查中发现很多“成本ERP数据没跑通”的案子根源不是财务模块的问题而是后勤这边物料移动没有及时过账或者移动类型用错导致物账不一致财务月底关账时怎么都对不上。5.2 计划订单“不跟着BOM变”是什么情况有朋友遇到过这样的问题BOM改了新物料加进去了但跑完MRP之后已存在的计划订单里的组件需求还是老的新增的物料没有出现在生产订单或者计划订单的组件清单里。这其实就是“根据BOM来变而不是根据计划订单变”这个热搜问题的核心场景。SAP的MRP在重算计划订单时默认不一定重新展开BOM。如果一张计划订单在下一次MRP运行时没有被删除重建它的BOM展开信息可能还是上一次生成订单时的快照。这个时候你修改了BOM但计划订单里的组件需求不会自动更新。解决办法有几个最简单粗暴的是手工删除旧的计划订单让MRP重新生成新订单自然会带出新BOM。如果你不想手工删可以在MRP组的配置里设置让系统在重计划时总是重新展开BOM或者使用事务码MD15协作计划去看计划订单的BOM展开状态。这里我的建议是BOM变更一定要走正式的变更流程变更后安排一次针对该物料及其所有下级物料的MD03多层重跑并且跑完检查MD04确保新物料被展开成相关需求、旧物料的需求被清掉。5.3 一个真实排查过程前阵子帮一家机械制造企业排查一个“物料天天缺”的问题。现象是某个外购件在MD04里显示有采购申请数量也够但到货日期总比需求日期晚三天产线隔三差五停线。计划员每次手工加急采购员也很委屈说供应商已经最快了。我打开MD04看了那行采购申请发现它的处理类型是“人工处理”没有勾选“完全交货”之外的其他自动更新逻辑。也就是说这张采购申请是手工创建的MRP在后续运行中不会自动调整它的交期。于是当我查看MRP控制参数时发现这个MRP组的“创建采购申请”设置是“1创建并固定”而不是“2创建时不固定”所以每次MRP跑完之后手工采购申请的交期一直停在原值不会跟着最新的需求日期走。解决方式也很简单把该MRP组或该物料的采购申请处理方式改为不固定然后让MRP重新跑一次采购申请的交期就会自动对齐到最新的需求日期。后来同样的物料再没有发生系统性缺料。这件事其实不是SAP的Bug而是参数和业务预期不匹配的典型。每一次MRP异常都要先想清楚是我的数据问题还是参数配置问题还是业务流程本身就断了一环。最后说点实在的做SAP也好做其他ERP也好MRP从来不是某个模块的“独奏”而是全公司数据质量、业务流程、参数配置的一次大合唱。我自己在实际工作里养成了三个习惯每天固定时间刷一遍MDVP按MRP控制者维度看异常信息每周至少抽几个物料从MD07到MD04再到采购申请一路点下去验证供需闭环每当BOM、策略、MRP参数有变更时绝不只跑完就结束而是必须复盘一遍MRP清单和MD04确保结果符合预期。如果你正在被MRP“跑不通”折磨我的建议是别急着改系统先打开MD04把每一行供需都读懂再去看主数据和参数。很多时候问题不在系统而在我们给系统喂了什么数据和规则。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价