MRP物料需求计划系统:从原理到实操,让补货量自动算清楚
2026/9/24 22:27:05 网站建设 项目流程

先聊两句题外话。做了这些年供应链和ERP相关项目,我见过太多“库存金额高得吓人,但产线天天催料”的矛盾场面。老板一看报表,原材料库存堆了三个亿;计划员一查缺料,核心物料连一周的量都不够。问题出在哪?绝大多数情况不是采购不努力,而是“补货数量”这件事压根没人算清楚,凭经验、凭感觉、凭上个月采了多少。这种“感觉式补货”,遇上需求波动、BOM变更、供应商交期不稳,必然走向两个极端:要么过量采购压死现金流,要么料缺到停线。物料需求计划系统(MRP)要解决的就是这件事——把库存数据、需求数据、主数据串起来,让系统自动算出“该补多少、什么时候补”,把资金占用压下来,同时把缺料风险控住。

这篇文章我结合自己实施MRP项目的经验,从原理、主数据、参数、实操到踩坑,完整拆一遍。如果你正在选型、准备上线MRP,或者公司已经有了系统但跑不好MRP,这篇内容应该能帮你少走不少弯路。

1. 物料需求计划系统到底在算什么?先把底层逻辑搞透

1.1 一句话理解MRP的运算逻辑

MRP(Material Requirements Planning,物料需求计划)核心就一句话:根据你要产什么,倒推需要哪些料、各要多少、什么时候要,再结合库存、在途和已分配量,算出真正的缺料数量和需要下达采购/生产指令的时间。

听起来简单,但真正跑过MRP的人都知道,这个“倒推”涉及三层展开。

第一层是主计划,也就是产成品(或半成品)的生产计划,回答“做什么、做多少、什么时候做”。第二层是物料清单(BOM),回答“做这个东西要用什么、各用多少”。第三层是库存和供应数据,回答“这些料现在有多少、已经订了多少、已经被别的订单占了没有”。

系统把这三层合在一起,一层层往下展开计算,最终形成一份净需求清单:物料编码、需求数量、需求日期、建议下单日期、建议采购量。采购员拿到这份清单,基本上不用再自己脑补“买多少”,系统已经把答案给出来了。

1.2 为什么“库存数据+MRP”能避免过量采购

过量采购的根因,往往不是采购员手松,而是信息断层

举个实际例子。某家电子厂,某种电容上月用了80万颗,采购按“经验”直接订了100万颗,结果这个月产品切换,用量降到30万颗,70万颗变成呆滞库存,压在仓库里吃资金。这类事在传统管理模式下几乎无法避免,因为经验型补货只看“过去用了多少”,看不到“未来还要用多少”。

MRP换了个算法:它只看未来需求。需求来自销售订单、预测、生产计划,不是来自历史出库。同时它会扣减现有库存、在途订单、已分配量,算出真正的净需求。假如未来一个月还需要50万颗,库里已有20万,在途还有15万,那么净需求就是15万——系统绝不会让你订30万。

这个逻辑一旦跑起来,过量采购自然被压在源头。

1.3 MRP系统不是“买来就能跑”的,先泼盆冷水

很多老板对MRP有误解,以为上一个SAP、Oracle或者国产ERP,打开MRP按钮,答案就自动出来了。现实很残酷:MRP只不过是一台“计算器”,你喂给它多少准确数据,它就还你多少准确结果。数据不准,它就会一本正经地算错。

我在项目实施中反复和客户强调一句话:**MRP上线不是在测软件功能,是在测主数据和库存数据。**数据质量不过关,系统跑出来的计划就是废纸,甚至比人拍脑袋更危险——人拍脑袋错了还能发现,系统跑错了,大家还以为是对的,忙活半天全白费。

所以下面这部分,主数据是做MRP绕不开的第一个硬骨头。

2. MRP主数据介绍:决定计划质量的“隐形地基”

2.1 物料主数据:每个物料都要说清楚“自己是谁”

MRP计算的最小单位是“物料”。如果物料主数据不完整,系统根本没法算。日常项目中,最容易导致MRP算错或算不出来的物料主数据问题,集中在以下几个字段。

**物料的计划策略。**这块不在这篇文章展开,但做MRP的朋友务必记住一个原则:**自制件、外购件、委外件必须分开设置默认采购/生产类型。**系统要把自制件的需求通过BOM继续往下展开,外购件则直接生成采购建议。如果外购件错设成自制,系统会跑到下级去找它的BOM,结果要么报错,要么漏算采购需求。

**提前期(LT)。**提前期是MRP计算“下单日期”的关键参数。外购件的提前期要包含供应商备料、生产、运输、入厂检验的时间,不能只填对方说好的交期。很多项目里我见到的通病是提前期偏乐观——供应商承诺7天,实际平均要10天,计划员为了保险,私下又提前一周下单。其实正确做法是直接把提前期设成保守值,让系统按保守值算,下单时间自然就提前了,不需要人为干预。

**安全库存。**安全库存是用来吸收需求波动和供应波动的缓冲量。它是一把双刃剑——设太高,库存金额直接上去;设太低,缺料停线。合理做法是基于过去12个月的需求标准差和供应商交期波动率来算,而不是拍脑袋。后面第3部分我会给一个具体的参考算法。

**批量规则和最小起订量(MOQ)。**这组参数直接决定“系统建议的采购量是多少”。按经济订货量(EOQ计算)或者固定批量都可以,但不能漏设MOQ。我曾经遇到一个项目,物料MOQ是5000个,系统没维护,算出净需求780个,采购按780个下单,供应商直接拒单,折腾了两周,产线差点停了。

2.2 BOM(物料清单):MRP运算的“配方表”

BOM就是产品的配方表——做什么东西,需要哪些原材料,各自的用量是多少。MRP的“展开”过程,本质上就是沿着BOM一层一层往下算。

BOM数据里,有几个坑是项目里特别高频的。

第一类是用量单位不统一。原材料的采购单位是“卷”或“箱”,但BOM里用量用的是“米”或“个”,又没有维护单位换算关系,系统最后算出来采购数量直接差出一个数量级。基础单位不统一,是MRP算错的头号隐性杀手。

第二类是BOM版本混乱。一个产品三个BOM版本,老版本没有失效日期,系统默认取最新版本,结果量产用的是老BOM,物料需求算出来就是错的。

第三类是损耗率缺失。很多物料的实际生产使用量一定是大于BOM理论用量的,比如贴片电阻在贴装环节有损耗。BOM不维护损耗率,系统算出来的需求量就偏少,生产一段时间后必然缺料。

有点夸张地说,BOM这层数据做到什么程度,MRP就能算到什么准确程度。

2.3 供应商与采购信息主数据:交期约束在这里

做完物料主数据和BOM,另一块容易被忽略的是采购信息主数据。它主要包含:物料与供应商的对应关系、采购提前期、最小采购批量、舍入规则(按包装倍速取整)

这块数据直接影响MRP输出的“采购建议”能否落地。比如系统建议采购1200个,供应商的最小包装是500个/箱,按1200下单要么被拒,要么多出200个零头。如果有舍入规则,系统会自动取整到1500个。如果没有,计划员就只能在MRP结果的基础上手工再改一遍——一改,就容易出错,也容易退回到“人管人”的老路。

主数据这块,我强烈建议上线前做一遍全面“数据体检”。谁维护、多久更新一次、审批流怎么走,都要提前定清楚。数据是MRP的燃料,燃料不干净,发动机再好也白搭。

3. 补货量自动计算的核心公式与参数选择

3.1 净需求计算的底层公式

MRP补货量计算的底层公式并不复杂,拆开看就四个要素:

净需求 = 毛需求 - 现有库存 - 在途量 + 安全库存

细看每个要素怎么来。

毛需求,来自生产计划/销售预测按BOM展开后,物料在某个时间段内的总需求。用MPS(主生产计划)数量乘以BOM单耗,展开到不同日期就得到分时段的毛需求。

现有库存,指当前时点该物料的可用库存。注意,这里要用“可用库存”而不是“账面库存”。账面库存包含已分配给其他订单的量,也包含质检待处理的量。可用库存 = 账面库存 - 已分配量 - 冻结量,这个数才算数。

在途量,指已经下了采购单、供应商还没交货,或者已经下了生产工单、车间还没完工入库的数量。这个数据如果没维护好,MRP会重复采购——明明已经订了,系统不知道,又建议订一次,导致库存翻番。这是“过量采购”最常见的MRP类原因。

安全库存,上文提到了,是缓冲量。它的作用是:即使需求短期上浮或者供应商延迟到货,库存也不会降到零。安全库存要求MRP始终“强制保留”这部分数量,只有当库存低于安全库存时才会触发补货建议。

举个例子:某物料毛需求1000,可用库存300,在途400,安全库存200。那么:

净需求 = 1000 - 300 - 400 + 200 = 500

这500就是系统建议的补货量。

3.2 批量规则怎么定:固定批量、经济批量还是逐批

纯数学算出来的净需求是500个,但实际采购是不是就买500个?不一定。这里涉及批量规则。

常见的批量规则有三种。

逐批(Lot-for-Lot),就是净需求是多少就买多少。优点是库存最精准、资金占用最低;缺点是没考虑MOQ和供应商的经济起订量,采购频次高,单次订单处理成本高。

固定批量(Fixed Qty),比如每次固定买2000个,不管净需求是500还是1800。适合交易成本高、供应商固定起订量大的物料。

经济订货量(EOQ),用“年度需求 + 单次下单成本 + 持有成本”算出一个最优批量,让总成本最低。适合需求平稳、价值中等、采购频次较高的物料。

我在项目中给客户的建议一般是:**高价值物料用逐批,低价值通用料用固定批量,需求稳定的中间品类可以用EOQ。**不要一个规则打天下。

另外,取整规则一定要设。比如净需求是486个,MOQ是500,系统直接建议500;如果包装是200个/箱,系统会按200的倍数取整到600个。取整规则不设,计划员拿到建议量还得自己算半天。

3.3 安全库存计算公式参考:不靠拍脑袋

关于安全库存的计算,网上有很多模型,实操中我常用一个相对简单、数据也好拿的公式:

安全库存 = Z × √(提前期/需求周期) × 需求标准差

其中Z对应期望的服务水平(比如95%服务水平取1.65,98%取2.05)。需求标准差可以用过去6-12个月的月需求数据来算。

假设某物料月均需求1000个,需求标准差200,提前期1个月(等于需求周期),取95%服务水平:

安全库存 = 1.65 × √(1/1) × 200 = 330个

如果提前期是2个月,而需求周期是1个月,那公式就是:

安全库存 = 1.65 × √(2/1) × 200 ≈ 467个

这个算法至少比“拍脑袋定5000个”要科学得多。安全库存不是越高越好,它是库存成本和缺料成本之间的平衡点。定完安全库存,一定要定期复盘——每个季度或每半年根据需求波动情况刷新一次,不要一年设了十年不变。

4. 实操日记:从数据准备到MRP结果落地

4.1 上线前:主数据清洗的三板斧

MRP能不能跑起来,上线前两周的准备工作至少决定了一半成败。我按自己的项目习惯,把上线前准备分为三步。

**第一步,核对物料主数据。**导出物料主数据清单,重点检查六项:物料类型(外购/自制/委外)、默认供应类型、提前期、MOQ、批量规则、安全库存。逐条过,缺什么补什么。这个工作量大,需要供应链、采购、IT、生产计划一起坐下来核对,不要只丢给IT。

**第二步,清洗BOM准确性。**选几个代表产品,从成品BOM往下逐层核对——单耗对不对、漏没漏料、版本是不是最新。尤其是工程变更后有没有及时更新BOM。这里有个行之有效的抽查方法:**拿一个最近刚刚生产完成的成品订单,按BOM理论用量反推物料总需求,再去和实际领料数量对比。**偏差超过5%的BOM一定要逐层排查原因。

**第三步,库存准确性校验。**MRP算得准不准,账实相符是前提。上线前建议做一次全面盘点,并同步处理掉系统中的其他无效库存记录:待检、冻结、不良品、客户寄售等分类是否清晰。很多企业账面库存和实物差5%-10%,这5%-10%反映到MRP结果里,就是该补的没补、该压的没压。

4.2 试运行阶段:不急着砍采购,先“影子运行”

我的习惯是:MRP上线初期不要马上把它变成唯一的采购依据,先并行跑一段时间——老办法照旧,MRP也照跑,两组结果放一起对。这个做法叫“影子运行”。

影子运行的好处是:既能验证系统计算结果是否合理,又不会因为系统参数设置错误让采购直接踩雷。试运行期一般是2到4周,至少覆盖一个完整的物料采购周期。

这段时间里,计划员要做的事是:每天对比手工计划和MRP建议的差异,分品类记录差异原因。是安全库存设高了?BOM数量错了?还是提前期不准?这期间排查出的每一个差异,都是系统的“体检报告”。

等到连续两周MRP建议和手工计划差异小于5%,就可以考虑切换到MRP为主要依据了。

4.3 正式运行:MRP工作台的日常操作流程

系统正式上线后,计划员每天面对的就是MRP工作台。一个标准的日常操作流程大致是:

先看系统跑批结果。MRP通常支持按天或按小时跑批,跑完后会生成计划订单和采购建议。计划员打开工作台,按物料分类筛选,先处理有异常提示的行——比如物料主数据不完整、BOM过期、供应商信息缺失,这些会导致系统算不出结果或算得明显不合理。

然后核对关键物料的净需求,特别是高价值物料、长交期物料、瓶颈物料。系统建议的量不等于最终下单的量,需要计划员结合项目实际情况微调。但这个“微调”应该是例外管理,而不是常态。

确认后,将采购建议转成采购申请或直接推送给采购部门生成采购订单。系统里有严格的做法,MRP建议转为采购申请,采购员根据供应商配额、价格条款再转采购订单。这一步要有审批流,避免采购员随意修改数量。

5. 常见问题与排查技巧:MRP结果为什么总不对

5.1 重复采购:明明订过了系统还建议订

这个场景太常见了。采购员看到MRP建议量,火冒三丈:这料我上周就下单了,你让我再买一遍,是不是疯了?

排查思路:先从在途量入手。检查系统里这份采购订单是否已正确关联到对应的物料和需求日期。如果采购订单在系统里是“草稿”状态,没正式审批核准,MRP默认它是无效供应,不算在途。另一种可能是采购订单的交期比需求日期晚,MRP认为这批货赶不上这轮需求,于是额外建议采购。

我碰到过一个典型案例:某公司采购为了省事,把三个项目的同种物料合并下了一个采购单,但PO没有按项目分需求行,结果MRP只认了其中一条,另外两条的被算成需求缺口,系统建议重复采购。

解决办法:采购订单必须按需求行关联到对应的MRP需求,不能把多个需求合并到同一个行而不做拆分。这个习惯要在一开始就立好。

5.2 BOM错误导致的需求失真

BOM出错对MRP的危害是“灾难性”的,因为MRP沿BOM展开时,一个物料的BOM错了,会影响它下挂的所有子件需求。常见情况有:

BOM里少了一颗料,系统算出的需求里就完全没有这颗料,直到生产线停线才发现。BOM里物料代码挂错,比如使用了旧物料编码,而旧编码已经没有库存和供应商信息了,系统会一直建议采购,但没人处理。BOM版本失效日期没维护,系统取了最新版本,但实际用的是旧版本,算出来的需求五花八门。

这个问题的排查思路只有一个:**建立BOM变更流程,任何BOM的修改必须经过工程确认,并维护生效日期。**同时定期用“已完工工单的实际领料量”反查BOM用量准确性,做到先发现再修复,而不是等停线了再去翻。

5.3 安全库存越设越高,库存金额越降不下来

有些企业的MRP项目跑着跑着,库存金额反而更高了。一查原因,大家都在不断往上调安全库存。缺一次料,就把安全库存加一截;再缺一次,再加一截。一年下来,安全库存普遍翻倍,库存金额当然只涨不跌。

怎么办?我的建议是:**安全库存的调整必须有审批、有依据、有复盘。**每一次调安全库存,必须写清楚调高理由、依据的数据、调整幅度和有效期。到期后重新评估。安全库存不是“拍脑袋加一点”那么随意,应该是一个持续受控的参数。

另外,定期清理“长期无需求物料”。有的物料安全库存设了三年,但产品早就不用了,需求记录全是0,MRP每次因为安全库存仍然给出补货建议。这种物料就应该把安全库存清零,多余的库存想办法消耗或者报废处理。

5.4 MRP结果迟迟不出,跑批性能问题

随着业务量增长,MRP跑批耗时越来越长——从半小时变成三小时,甚至需要隔天才能跑完。原因通常是BOM层级深、物料数量多、数据量大且缺乏索引维护。

这个问题的解法,从几个方向同时下手:历史数据归档,超过一年甚至两年的旧交易数据可以定期归档,减少MRP计算范围;参数精简,把每次跑批的计划范围缩小,不要每次都全量展开所有的成品BOM,按需只展开有需求变化的产品;数据模型优化,让IT团队检查MRP涉及的核心表有没有建立正确的索引。

另外有个小技巧:把MRP跑批安排在系统负载低的时段(比如凌晨),同时把结果通知配置好,计划员早上上班就能直接看到结果。

6. 拿MRP结果去指导采购,还是要有一点“人味”

MRP跑出来之后,直接把建议量推给采购去下单,理论上是能做到的,但实际运行中,我还是建议计划员保留一定的判断空间。

比如交期波动大的物料,MRP按标准提前期计算建议下单日期,但某些供应商在旺季大概率延迟一周。这种情况下,与其每天盯系统倒计时,不如在物料主数据里把提前期直接调成保守值,再让系统算一次——这比自己每天手动提前下单靠谱得多。

再比如物料有价格波动预期,供应商月底要涨价,采购想提前锁量。这种情况MRP是不知道的,它只会按当前的净需求给建议。采购员可以在系统里做“计划外采购申请”,注明原因后走审批。这不是推翻MRP,而是把额外的商业判断补充进去。

所以,MRP最大的价值是把“常规决策”自动化、标准化,把有限的管理精力释放出来,去处理真正的例外情况。系统负责不出错,人负责做判断。

我在项目里测试过,一套主数据维护得当、参数设置合理的MRP系统,能让计划员的日常补货决策时间缩短一大半。原来每天花三小时逐条核对库存、逐条算采购量,现在只需要看系统生成的例外报表,处理真正需要人工介入的情况。这个效率提升,比砍掉几个百分点的库存金额更值得关注。库存金额是结果,高效准确的工作流,才是长期持续改善的引擎。

最后分享一个小经验:MRP不是一个“上线就完事”的项目。上线只是起点,真正的价值要经过参数调优、主数据治理、流程磨合,至少运行三到六个月才能释放出来。给自己一点耐心,也给系统一点时间。只要主数据这条地基不塌,MRP这个“计算器”会比你想象中的任何老法师都靠谱。

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

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

立即咨询