简介:《物料需求计划(MRP)》是一份面向生产管理、库存控制、采购计划学习者及企业计划人员的PPT课件,围绕传统库存管理中高库存与低服务水平难兼顾、最终产品连续需求与相关物料块状需求冲突等问题展开。资源包仅含1个PPT文件,约458KB,轻量便于课堂讲授、自学或内部分享。已有676人学习。课件从MRP基本原理入手,梳理主生产计划、物料清单、库存记录三类关键输入,以及采购指令单、生产指令单两类输出,并结合逻辑流程图说明“生产什么、用到什么、已有什么、还缺什么”的问答关系;随后讲解BOM分层编码与各层物料需求量推算,细化粗需求量、预计入库量、现有库存量、净需求量、计划订货量和计划投入量的计算,并以电表及零件需求案例串联主生产计划与物料需求计划编制过程。适合用作MRP入门梳理与课堂案例参考。
1. 物料需求计划(MRP)到底是什么:一桌年夜饭的备菜账
过年要备十几道菜,很多人头一天去菜市场凭感觉买一大袋,结果有几样料不够用,有几样放到坏了都没动。会做饭的人不这么干:先定菜单,知道要做什么菜;再翻菜谱,算出每道菜需要多少肉、多少配菜;然后打开冰箱,看看已经有什么;最后倒推什么时候该泡发、什么时候该下锅。
物料需求计划(MRP,Material Requirements Planning)就是制造业里的这张备菜账。它把三件事串起来——最终产品要生产多少、每件产品由哪些零件组成、仓库里现在还有多少——算出一张带时间点的清单:什么物料、要多少、什么时候该下采购单、什么时候该开工生产。它要治的正是那种“料没到齐、产线干等,仓库堆满却还是缺件”的常见问题。搞懂它,基本就搞懂了制造企业计划系统的基础。
2. 为什么需要MRP:传统库存管理容易出问题的几个原因
2.1 盲目性:把零部件当成独立商品来管
先分清一个词:相关物料。它指的是为了把最终产品卖出去,需要列入计划、控制库存、控制成本的那些东西——原材料、零配件、毛坯、辅助工具、办公用品,凡是生产过程中要用到的都在里面。它们有一个共同点:自己的需求并不是由市场直接产生的,而是被最终产品“带”出来的。
传统库存管理最大的问题就出在这里:它把每个零部件都当成一个独立项目,各自设订货点、各自设安全库存。听上去很公平,实际很盲目。一台设备要装四个脚轮,脚轮的需求量从来不由“上周卖了多少脚轮”决定,而由“这周要装多少台设备”决定。盯着脚轮的历史消耗去补货,就像餐厅老板盯着上周卖了多少馒头来决定这周买多少面粉——菜谱一换,账就全错了。
这个道理放到实际场景里更明显。一种零件可能同时被三个产品用到,如果三个产品各自按自己的节奏订货,仓库里就会出现同一种零件分三批到货、互相不知道对方存在的情况。计划员看到的是一堆订单,看不到的是这些订单背后其实是同一份总需求。
2.2 连续需求与块状需求的错位
最终产品的需求通常是连续的——市场每天都在买,销量曲线相对平滑。但它所带动的零部件需求是“块状”的:装配一百台设备,脚轮不是这周买五个、下周买五个,而是一次性需要四百个。这种一块一块的需求,用按平均消耗量算出来的经济订货批量去应对,必然错位。
举个简化例子。某零件在九周内的需求集中在第 1、5、9 周,各 30 件,其余周为零:
| 周次 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | | 需求 | 30 | 0 | 0 | 0 | 30 | 0 | 0 | 0 | 30 |
假设按经济订货批量算出一次订 80 件。第 1 周订 80 件,用掉 30 件剩 50 件;第 5 周再用 30 件,剩 20 件;到第 9 周还需要 30 件,手上只有 20 件,缺 10 件。想让第 9 周不断料,就必须在第 5 周再补一单 80 件:补完库存变 130 件,用掉 30 件剩 100 件,第 9 周用完还剩 70 件。九周总共只消耗了 90 件,期末却压着 70 件。
这个结果很说明问题:批量规则本身没错,错在它只看“订多少划算”,不看“什么时候真的要用”。MRP 补的正是这个时间维度。
2.3 高库存与低服务水平的两难
传统方法最难受的地方,是低库存和高服务水平几乎不能兼得。备货多,资金占用大、呆滞风险高,但产线不缺料;备货少,资金轻了,可一旦某个零件晚到,整条线就得停。计划员被夹在中间,最后往往靠“多备一点”来买安心,库存就这么一年一年堆上去。
更麻烦的是,这种两难在企业里常常表现为部门之间的互相推责。销售抱怨交期长,生产抱怨缺料,采购抱怨计划变来变去,仓库抱怨一堆用不上的料。每个人的动作单独看都合理,凑在一起却互相冲突。原因在于,大家用的不是同一套需求数据。
MRP 的思路是把“要什么”和“什么时候要”分开算清楚:先由最终产品的计划推导出每个物料的需求量和需求时间,再根据生产或采购周期,倒推出应该什么时候开始动手。需求一旦变成带时间戳的清单,库存和交付就不再是二选一,而是同一份计划里的两个结果。
3. MRP的三个关键输入:MPS、BOM和库存记录各管什么
3.1 主生产计划MPS:回答“生产什么、生产多少”
主生产计划(MPS)是整套计算的起点,它说明在每一个时间段里,最终产品要出多少。它的来源通常是两块:对市场的预测,以及已经签下的合同订单。预测告诉你“大概需要多少”,合同告诉你“必须交多少”,两者叠在一起,才构成一份可执行的主生产计划。
这份计划的质量直接决定后面所有数字的质量。设计部门改一次产品结构、换一次材料,销售部门改一次品种、改一次数量、挪一次交期,都会让主生产计划跟着变。计划员最怕的不是算不出来,而是算出来的东西第二天就作废。所以 MRP 用得好的企业,通常不是算法多先进,而是主生产计划相对稳定、变更有一套明确的节奏。
把这一层想清楚,会得到一句很朴素的公式,制造业里几乎所有问题都能往里套:
提示:(生产什么 × 用到什么)- 已有什么 = 还缺什么
生产什么对应 MPS,用到什么对应物料清单,已有什么对应库存记录,还缺什么就是 MRP 算出来的净需求和订货建议。四个问题——生产什么、用到什么、已有什么、还缺什么、什么时候订货——也正好是 MRP 要回答的全部内容。
3.2 物料清单BOM:产品结构树怎么分层
物料清单(BOM)说明一件最终产品由哪些零部件、原材料构成,各自用多少。它不是一张平铺的表格,而是一棵有层次的结构树:最终产品放在第 0 层,与它直接有母子关系的部件放第 1 层,再往下依次类推。同一物料如果在多个产品、多个层级里出现,按它出现的最低层次编码,这叫低层码。这一条很关键,它保证同一个物料只被汇总计算一次,不会重复下单。
分层的目的是让计算有顺序:上层没算完,下层的总需求量就定不下来。信息处理必须自上而下,第 n 层没处理完,不能碰第 n+1 层。
看一个具体结构:产品 A 由 2 个 B、3 个 C 组成;B 由 1 个 D、2 个 U 组成;C 由 1 个 D、1 个 V 组成;V 又由 2 个 W 组成。要生产 100 件 A,各层的需求量是这样推出来的:
| 层次 | 物料 | 计算方式 | 需求量 | | 0 | A | 主生产计划 | 100 | | 1 | B | 2 × 100 | 200 | | 1 | C | 3 × 100 | 300 | | 2 | D | 1 × 200 + 1 × 300 | 500 | | 2 | U | 2 × 200 | 400 | | 2 | V | 1 × 300 | 300 | | 3 | W | 2 × 300 | 600 |
注意 D 这一行:它同时挂在 B 和 C 下面,需求量要把两条路径加起来,而不是取其中一条。这正是低层码存在的意义——如果不做统一编码,很容易算出两个 200 和 300,然后分两次采购。同理,V 在第 2 层,W 在第 3 层,W 的量必须由 V 的量再乘一次,不能直接由 C 推。
物料清单的价值还不止于算数量。它本质上是一个把销售、生产、供应三方信息集成在一起的数据结构,谁看都是同一棵树。销售改配置、设计改用量、采购看需求,用的都是这份结构,而不是各自维护一份表格。
3.3 库存记录:三个数决定“已有什么”
库存记录回答“已有什么”,但它不是简单查一下现有库存就完事。真正参与计算的是三个数:现有库存量,指当前实际能用的量;已分配量,指已经被别的订单占走、不能再动的部分;预计入库量,指已经投产或已经订购、预计能在某个周期内到货入库的数量。
把这三个数分开,是为了避免一种常见情况:账面看着有货,实际一查全被别的订单占用了。只看现有库存去算缺口,算出来的计划一定是错的。
此外,库存记录里还有两类数经常被忽略,却直接影响计划的准确度:一类是失窃、报损这类账实不符,另一类是入库延迟。前者让账面数字虚高,后者让预计入库量变成空头承诺。这两件事不解决,MRP 算得再准也是白算。
4. 净需求是怎么算出来的:六个要素和一条倒推时间线
4.1 六个记录要素,缺一不可
MRP 的每一次计算都围绕六个要素展开。它们的关系并不复杂,难的是每一项都要按周期逐周算,而不是算个总数就完事。
| 要素 | 含义 | 关键点 | | 粗需求量 Gj(t) | 第 t 期的总需要量 | 非独立需求量 + 独立需求量 | | 预计入库量 Sj(t) | 已投产或已订购、预计第 t 期到货的量 | 是承诺,不是现实 | | 现有库存量 Hj(t) | 第 t 期可用的库存 | 要扣掉已分配部分 | | 净需求量 Nj(t) | 库存不足时的短缺量 | 算成负数时取零 | | 计划订货量 Pj(t) | 按批量规则调整后的订货任务量 | 不等于净需求 | | 计划投入量 Rj(t′) | 倒推提前期后的投入数量 | 等于计划订货量提前 L 期 |
粗需求量由两部分组成:一部分是上层物料计划投入量乘以物料清单里的用量,这部分叫非独立需求;另一部分是直接面对市场的独立需求。写成式子就是:粗需求 = 上层投入量 × 单件用量 + 独立需求量。
净需求量的算法是:净需求 = 粗需求 − 上期现有库存 − 本期预计入库。如果算出来是负数,就取零,说明这个物料库存有余,不需要订货。这一步看着简单,实际最容易出问题——很多人把现有库存和预计入库加在一起,却忘了扣掉已经被占用的部分。
计划订货量不等于净需求量。净需求是“缺多少”,订货量是“按什么批量下单”。批量规则可能要求凑整、可能要求满箱、可能要求满足若干周的需求,所以 15 件的缺口可能变成 100 件的订单。这个差别如果不和采购讲清楚,采购会以为计划部门在虚报。
4.2 提前期倒推:从“什么时候要”到“什么时候下单”
计划投入量是把计划订货量按提前期往前推。生产提前期或采购提前期是 L,那么第 t 期要交货的量,必须在第 t−L 期就投入生产或提出采购。
这一步是整个 MRP 里最有价值的一步。它把“什么时候需要”翻译成“什么时候动手”。没有这一步,计划只是一张需求清单;有了这一步,计划才变成一张可以照着执行的排期表。
很多企业在这一步出问题,不是因为公式记错了,而是提前期填得不准。采购提前期按供应商承诺填,结果实际到货晚两周;生产提前期按理想产能填,结果排队等了一周。提前期一旦失真,后面所有倒推出来的时间点全部失效,计划员只能靠经验手工改,改到最后又回到了“拍脑袋”。
4.3 逐层分解:从第0层一路算到最底层
整个计算过程按反工艺顺序倒推:从第 0 层的最终产品开始,逐层往下,直到所有物料在所有时间周期上的需求量都算完为止。顺序不能乱,因为下一层的粗需求依赖上一层的计划投入量。
用一小段代码把逐周计算的过程写出来,会更容易看清每一步在做什么:
# 逐周计算某物料的净需求、计划订货量与计划投入量(简化版) gross = [0, 0, 40, 0, 0, 60, 0, 0, 80] # 粗需求量,索引0占位,1~8周 scheduled = [0, 0, 0, 30, 0, 0, 0, 0, 0] # 预计入库量 on_hand = 25 # 期初现有库存(已扣除已分配量) lead_time = 2 # 采购或生产提前期,单位:周 lot_size = 100 # 固定批量规则 net_need, planned_order, planned_release = [0]*9, [0]*9, [0]*9 for t in range(1, 9): available = on_hand + scheduled[t] - gross[t] # 本期可用量 if available < 0: # 不够用就形成净需求 gap = -available batches = -(-gap // lot_size) # 向上取整到整批 planned_order[t] = batches * lot_size net_need[t] = gap on_hand = available + planned_order[t] # 补货后的结余 else: on_hand = available # 库存够,直接结转 release_week = t - lead_time # 提前期倒推投入周 if planned_order[t] and release_week >= 1: planned_release[release_week] += planned_order[t]这段代码里,gross和scheduled按周排列,索引 0 只是占位,让第 1 周对应下标 1,读起来和表格一致。on_hand是期初可用库存,lead_time决定倒推几周,lot_size是批量规则。循环体做两件事:先用“上期结余 + 本期预计入库 − 本期粗需求”判断够不够,不够就把缺口按整批补上;再把这批订货按提前期往前推,记到对应的投入周上。
跑一遍会得到:第 3 周形成 15 件净需求,按批量下 100 件;第 6 周形成 20 件净需求,下 100 件;第 8 周形成 5 件净需求,下 100 件。提前期为 2 周,于是第 3 周的这批货要在第 1 周投入,第 6 周的要在第 4 周投入。
而第 8 周那批的投入周算出来是第 6 周,落在计划期内没问题;但如果粗需求出现在第 1 周,倒推出来就是第 −1 周,等于说“上期末就该动手了”。这个结果一旦出现,说明主生产计划给的时间太紧,或者提前期填得不对,靠改代码解决不了,得回头改计划。这也是为什么跑 MRP 通常要往前多看几个周期,给提前期留出余量。
代码里还有一个容易翻车的点:on_hand在补货后必须立刻更新,否则下一周会重复计算缺口。这种逻辑错误在表格上看不出来,只有把逐周结果打印出来核对才会暴露。
5. 五个常见易混概念:MRP、ERP、BOM差在哪
5.1 MRP 和 ERP:一个是发动机,一个是整车
易混点:看到企业里上的系统叫 ERP,就以为 MRP 是它的旧名字。
为什么混:两者确实同源,ERP 的核心计算模块里就包含 MRP,界面上很多功能名字也一样。
怎么区分:MRP 只回答一件事——物料在什么时间需要多少。它管的是物料需求这一个闭环。ERP 的范围大得多,财务、人力、销售、采购、库存、生产都在里面,MRP 只是其中负责计划运算的那一部分。可以这么理解:MRP 是发动机,ERP 是装了发动机的整车。讨论“MRP 算得准不准”时,说的是那台发动机;讨论“公司上不上 ERP”时,说的是整车买不买、怎么装。
5.2 BOM 和“配方表”:一个是结构,一个是配比
易混点:把物料清单当成一张“用了哪些料、各用多少”的平铺清单。
为什么混:日常沟通里,大家确实常常只说“这个产品用什么料”,听起来和配方表没区别。
怎么区分:配方表只讲配比,不讲层次,也不讲时间。物料清单必须分层,必须能回答“这个零件是在哪一层被用掉的”“它和哪些部件是母子关系”。少了层次,就无法逐层展开计算,也无法处理一个零件被多个产品共用的情况。判断方法很简单:能不能从最终产品一层层往下展开,展开到每个零件的总需求量都唯一确定——能,就是 BOM;不能,就只是一张物料明细。
5.3 独立需求和相关需求:一个看市场,一个看上头
易混点:把所有物料的需求都当成市场需求的加总。
为什么混:两者在数据上都表现为“某一周需要多少件”,肉眼分不出来。
怎么区分:看这个需求由谁决定。由市场、客户直接决定的,是独立需求,比如最终产品、备件;由上层产品的生产计划派生出来的,是相关需求,比如装配用的零件、原材料。相关物料的需求量必须由上层算下来,不能自己单独预测,否则就会出现同一批零件被重复计算的问题。
5.4 措施提示信息不等于生产指令
易混点:MRP 跑出来的结果直接当成命令下发。
为什么混:输出单上确实写着物料、数量、日期,看起来和工单没什么区别。
怎么区分:MRP 的输出是建议——建议什么物料在什么时间订货、订多少。它没有考虑产能是否够、供应商是否接得了单、资金是否允许。这些判断必须在计划员这一层完成,再转成真正的采购指令单和生产指令单。把建议直接当指令,最容易出现的场面是:系统说要,车间就做,做完发现设备排不开,或者买回来发现根本用不完。
5.5 粗需求和净需求:一个是总量,一个是缺口
易混点:把粗需求当成要采购的量。
为什么混:粗需求往往是表里最大的那个数,看着就像订单量。
怎么区分:粗需求是这一期总共要用多少,净需求是扣掉现有库存和预计入库之后还缺多少。粗需求是需求,净需求是采购或生产的依据。两者中间还隔着一个批量规则,所以最终的订货量可能大于净需求。这三个数看混了,库存和缺料就会同时出现。
6. 什么时候该用MRP,什么时候别硬套:三条边界与一个反例
MRP 不是万能工具,它的前提条件比公式本身更值得关注。
| 场景 | 是否适合 | 原因 | | 多品种、多层结构、零件共用度高 | 适合 | 手工推算无法同时保证数量和时间的准确 | | 按订单装配、交期要求明确 | 适合 | 提前期倒推能直接给出开工和采购节点 | | 产品结构简单、零件种类很少 | 谨慎 | 手工表格可能更快,系统维护成本反而高 | | 主生产计划天天变、变更无规则 | 不适合 | 输入不稳定,算得再准也是废纸 | | 提前期数据长期失真且无人维护 | 不适合 | 倒推出来的时间点全部无效 | | 单件小批、每单结构完全不同 | 谨慎 | 物料清单维护成本可能超过收益 |
举个具体例子。某模拟项目 X 是一款组装类电子产品,由主板、外壳、连接线和几个结构件构成,其中一种螺钉同时用在主板固定和外壳固定两个位置。手工排产时,计划员按外壳的用量估了螺钉,漏掉了主板那一路,结果第一批 500 台装到一半停产。改用逐层展开之后,螺钉按低层码统一汇总,需求量一次算全,问题消失。
但同一个项目也遇到过反例:有一段时间客户改配置非常频繁,一周改三次,主生产计划跟着改,每次改完都要重跑,跑出来的采购建议第二天就作废。那段时间 MRP 并没有解决问题,反而增加了工作量。后来做的不是优化算法,而是先把变更节奏固定下来,让计划有一个稳定周期,计算才重新变得有意义。
所以判断要不要用,关键看三条:产品结构是否有一定层次和共用件,主生产计划是否相对稳定,提前期数据是否有人负责维护。三条都占,MRP 能省下大量手工推算;缺一条,先补那一条,别指望系统能自动兜底。
我刚开始接触这类计划表时,最容易犯的错是盯着结果看,不看输入。有一次净需求算出来是零,我以为是库存充足,实际是预计入库量填了一笔早就该取消的订单,等于拿一个不存在的到货把缺口填平了。等发现时,产线已经等了两天料。从那以后我每次看一份物料需求表,都会先把粗需求、预计入库、现有库存这三列单独核一遍,确认每个数字都有出处,再去看净需求和投入时间。这一步多花的十几分钟,比事后找后悔药便宜太多。希望帮到你。
本文还有配套的精品资源,点击获取