做了快十年SAP PP实施,我面试顾问必问一个问题:MPS和MRP有什么区别?十个候选人有九个能背出“MPS是主生产计划,MRP是物料需求计划”,但往深了问一句——MPS在SAP里靠什么配置标识?跑完MPS之后还要看什么?计划时栅是干嘛用的?能完整答上来的人就少了一大半。这个现象我特别有感触:SAP PP模块里,计划功能的核心就两根柱子,一根叫MPS,一根叫MRP。这两根柱子如果只会背定义,模块等于没入门;真到了项目上,计划策略调不好,采购催货、生产插单、库存积压这些破事儿会轮着找上门。
这篇文章不打算复述教科书概念。我从这些年实际碰到的项目场景出发,把MPS和MRP的底层逻辑、SAP里的配置方式、常见误区和绕坑方法一次讲清楚。不管你是刚学PP的顾问新人,还是被生产计划折磨得够呛的甲方计划员,看完应该都能少踩几个坑。
1. 为什么这个坑值得认真说:MPS和MRP是PP模块的任督二脉
1.1 面试和项目里反复出现的老问题
我面试时最爱用一个连环问:你的客户有三个成品、五个半成品、二十种原材料,你准备怎么跑计划?很多人第一反应是“直接MRP跑全部”。我再问:如果其中一个成品用的是进口关键料,采购周期十二周,另两个成品国产料只要三天呢?这时候就会看到对方开始在“全跑MRP”和“给关键物料单独立计划”之间犹豫。
这个犹豫,本质就是没吃透MPS和MRP的分工。在SAP PP里,计划不是一条道走到黑的,而是分成几个层次:销售与运作计划(SOP)管宏观,主生产计划(MPS)管“要做什么”,物料需求计划(MRP)管“要什么料,缺多少,什么时候缺”。这三层的关系,就像饭店里先定季度营业额目标,再定每天每个菜做几份,最后拿着菜单去后厨和菜市场算原料。少了一层,或者层次之间职责不清,整个计划链就会乱。
1.2 表面都是“算需求”,内里是两套计划逻辑
很多人觉得MPS和MRP像,是因为它们运行时的内核都是同一套MRP运算逻辑,都会算库存、在途、提前期,都会产生计划订单。这也是SAP设计上容易让人误解的地方。
但实际上,MPS是计划层面的决策工具,它的产出用于回答“我们到底要不要多生产、提前生产、减少生产”这类管理问题;MRP是执行层面的展开工具,它的产出用于回答“采购要去买什么、车间要做什么、什么时候做”。一个是定盘子,一个是算细账。把这两件事混为一谈,项目不出问题才怪。
2. MPS的本质:主生产计划管的不是“生产”,是“定产”
2.1 主生产计划管的是哪一层
先说清楚MPS关注的对象。它盯着的不是所有物料,而是少数关键的“计划对象”——通常是成品,或者对产能和交期影响极大的关键半成品。用ABC分类的说法,MPS管的是A类物料,那些价值高、提前期长、对最终交付影响重大的东西。
为什么要把范围收窄?因为如果所有物料都进MPS,计划员每天看到的订单量会是天文数字,根本没法做有效的产能平衡和交期判断。MPS的价值不在于“算得快”,而在于“算得清晰”——只盯关键物料,判断能不能做、什么时候能做、做多少,才能在当前产能和客户交期之间取得平衡。
在一个典型的三层计划体系里,SOP给出的是粗粒度产品族的产销平衡,MPS在SOP之下、MRP之上,把SOP拆成具体可执行的关键物料计划。比如客户每季度要三千台设备,SOP可能只关心“三千台”这个总量,MPS则要拆到“四月第一周装配车间必须下线多少台、第二周多少台”,并且要看装配车间的产能是否扛得住。
2.2 MPS的输入输出:独立需求进,计划订单出,顺便做粗能力检查
MPS的输入是独立需求。独立需求来自哪里?一种来自销售预测,即计划独立需求;另一种来自真实销售订单,即客户需求。策略组不同,独立需求的来源和优先级也不一样。
MPS的输出是计划订单。这些计划订单不是最终执行指令,而是给计划层做确认用的“草稿”。跑完MPS后,紧接着要做的是粗能力计划,也就是RCCP。在SAP里可以用CM01这类事务代码,站在工作中心的角度看产能负荷够不够。如果不够,就要调整MPS计划,改数量、改日期,甚至调整班次和外包方案。这一步做完,MPS才算是真正“定产”了。
这个“定产”动作是整个计划体系的稳定器。没有它,销售预测一变,下面所有物料跟着地震;有了它,需求波动可以控制在MPS这一层,等计划员确认了,再往下放。
2.3 MPS与计划时栅:给计划一个稳定窗口
做MPS绕不开计划时栅。计划时栅是物料主数据里的一个字段,以工作日为单位,比如50个工作日。它的作用是:在当前日期到计划时栅之间的这段时间里,系统自动产生的计划订单不会被随意更改,相当于给计划一段“锁定期”。
为什么MPS需要它?因为MPS计划订单一旦被下层MRP反复改动,产能平衡就失去了意义。有了计划时栅,瓶颈物料的关键计划在锁定期内保持稳定,车间和采购才能按这个节奏执行。计划时栅设多少,要看物料提前期和业务波动程度,我见过最短的设7个工作日,最长的设90多个工作日。但要注意,时栅不是越长越好,太长了计划就僵了,后面我会专门讲这个坑。
2.4 SAP里怎么识别“这个物料跑MPS”
在SAP里,让一个物料参与MPS,最直接的抓手是物料主数据里的MRP类型。MRP类型以M开头的一批,比如M0、M1、M3、M4,就代表“这是一个MPS物料”。运行MPS时用MD40(总MPS)、MD41(单物料MPS)、MD42(单层MPS)这些事务代码,系统只会处理MRP类型带M的物料。
这一点我要重点强调:MPS不是一个独立模块,也不是一个独立的按钮,它是一套“MRP类型+策略组+运行事务代码+后续能力检查”的组合机制。很多人问“我的SAP里有MPS这个菜单吗”,这就是还没理解MPS在系统里的存在形态。
3. MRP的职责:把“能生产什么”拆成“还缺什么”
3.1 MRP的运算链路:毛需求到净需求,一层层往下炸
MRP的核心任务只有一个:按BOM把MPS或独立需求展开成所有物料的需求,再算出每颗料的净需求。毛需求是当前时段内所有需求的总和;净需求要从毛需求里扣掉现有库存、在途订单、已分配量,再考虑安全库存和批量规则,最后得出“到底还差多少”。
这里值得多说一句批量规则。同样的净需求,用按单批量、固定批量还是期间批量,最终生成的计划订单数量和频次完全不同。很多企业MRP跑出来一堆碎片订单,就是批量规则没设置好。这不是MPS和MRP的区别问题,但直接影响MRP的产出质量。
3.2 MRP管到所有层级,产出物不只计划订单一种
MRP和MPS最大的不同之一,是覆盖范围。MPS只盯关键物料,MRP则把BOM每一层都炸一遍,从成品到半成品再到原材料,一个不落。很多时候MRP还会跑出采购申请,而不是计划订单——比如对原材料,系统默认直接生成采购申请给采购部门;对自制的半成品,则生成计划订单给生产部门。
MRP的产出物通常有三类:计划订单、采购申请、相关需求。相关需求不会直接变成订单,但它会继续传递到BOM的更下一层。这一层一层的传递,就是MRP“展开”的真相。展开得非常快,S4/HANA里MRP Live跑几分钟就能算完几千种物料,但背后的逻辑并没有变。
3.3 单靠MRP能不能活?分业务场景
有些企业确实只跑MRP不跑MPS也能正常运转,前提是它们的业务足够简单:BOM就一两层,成品数量少,提前期短,需求也相对稳定。比如一个只有三种成品、十几种原材料的组装厂,成品用PD类型跑MRP,原材料跟着展开,完全够用。
但一旦业务复杂到BOM超过三层、有瓶颈工序或者关键物料提前期特别长,只跑MRP就会出问题。因为MRP是纯计算工具,它不管产能上限,也不会回答“这周装配车间到底干不干得完”,它只是忠实地告诉你“缺什么料、缺多少”。至于缺了之后怎么办,那是人要做的事。很多企业把MRP当成神,跑完就扔给采购,结果采购今天收到十张采购申请,明天又收到二十张取消变更单,就是典型的缺少MPS层做缓冲。
4. MPS与MRP的本质差别:一张表说透六大不同
4.1 横向对比:层次、对象、顺序、产出全不一样
| 对比维度 | MPS(主生产计划) | MRP(物料需求计划) |
|---|---|---|
| 计划层级 | 上层,定“产什么”,对接SOP和销售 | 下层,定“要什么料”,对接执行 |
| 计划对象 | 关键物料(A类成品或战略半成品) | 全部物料,含原材料、半成品、成品 |
| MRP类型 | M0、M1、M3、M4等M开头类型 | PD、VB、P1等常规类型 |
| 运行事务代码 | MD40/MD41/MD42 | MD01/MD02/MD03(S4里MD01N/MD02N/MD03N) |
| 运行顺序 | 先跑 | 后跑,通常在MPS确认之后 |
| 主要产出 | MPS计划订单,用于粗能力平衡 | 计划订单、采购申请、相关需求 |
| 能力检查 | 跑完要做RCCP粗能力检查 | 不直接做能力检查 |
| 计划稳定性 | 可配计划时栅锁定一段窗口 | 每次运行按最新需求重算 |
这个表格看着简单,但每条背后都有业务含义。比如“运行顺序”这一条,它决定了MPS计划订单要先被确认,MRP才能把它当作需求的源头。如果MPS还没确认就急急忙忙跑MRP,那MRP看到的需求可能是过期版本,下面所有采购申请都会跟着错。
4.2 运行顺序的深层逻辑:先锁定,再展开
为什么MPS必须跑在MRP前面?打个比方,你想请朋友来家里吃饭,得先定菜单,才知道要去超市买哪些菜。菜单没定就跑去超市,要么买菜不全,要么买了一堆没人吃的。
MPS做的事情就是定菜单——确定吃什么,每道菜做几份,并且看看自己家的锅碗瓢盆(产能)够不够。MRP做的事情就是拿着菜单去超市采购——按食谱倒推每一种食材要买多少。这两步要是顺序反了,整个计划体系就失去了锚点。
4.3 计划订单的“身份”流转:MPS订单如何变MRP的需求源
我在项目上常给客户讲一个概念:MPS跑出来的计划订单,不会静静地躺在系统里,它会成为MRP展开的“需求源头”。当MPS计划订单确认后,MRP运行时会把它当作上层需求,按BOM继续向下展开出相关需求。
所以正确的信息流是:销售预测或销售订单 → 独立需求 → MPS产生并确认计划订单 → MRP按BOM展开 → 下层半成品和原材料产生相关需求 → 生成采购申请或生产计划订单。这条链路里,MPS计划订单就像一个中转站,既承接上层的独立需求,又向下释放相关需求。弄明白这一点,你就不会再把MPS和MRP当成两个并行的独立功能。
5. 到底哪种企业/物料该用MPS?标准方案与项目变通
5.1 适合MPS的企业画像:瓶颈、长提前期、多层级
我判断一个客户要不要上MPS,一般看三个指标。
第一,是否存在明显的瓶颈资源。不管是装配线、关键设备还是熟练工人,只要存在瓶颈,就必须用MPS在这种资源对应的物料层做一次计划确认,否则跑完MRP,瓶颈资源的负荷根本无法提前暴露。
第二,是否有长提前期的关键物料或进口料。比如设备行业里的进口伺服电机、汽车行业的芯片,采购周期动辄几个月。这时MPS要把这些关键物料的最终装配层提前锁定,让长提前期物料的需求信号在MRP展开之前就已经稳定下来。
第三,BOM层级是否够深。三层以下的企业,直接MRP往往够用;但到了五六层以上,需求波动的放大效应非常明显。MPS在关键层做缓冲,能明显减少“牛鞭效应”——每一层都把需求波动放大一些,传导到最底层原材料时,采购申请的数量可能已经剧烈失真。
5.2 什么时候可以直接跳过MPS
反过来,有的企业完全不需要MPS。比如纯按单设计、按单采购的业务模式,销售订单下来之前不存在预测,订单下来之后直接按BOM采购,这时候MPS的“缓冲”作用没有发挥空间。又比如两层BOM的简单装配,成品和原料直接关联,即便需求波动,展开之后也就是一层,混乱程度有限。
我曾经给一个小型电子组装厂做过方案,对方提出也想上MPS。我看完BOM和销售模式——只有两层结构,按单生产为主,立刻劝退。直接全部用PD跑MRP,配合正确的策略组,效果一点不差,还省了MPS日常维护的工作量。
5.3 项目里最常用的T-shirt模型:不是所有物料都值得MPS
这里推荐一个非常实用的思路,我做计划体系方案时经常用:ABC-XYZ分类。
- A类:关键成品/战略物料,用MPS,配计划时栅,作为计划锚点。
- B类:中间物料,用标准MRP,跑计划订单和采购申请。
- C类:低值易耗、通用件,用再订货点,不参与每次MRP重算。
X、Y、Z代表需求波动性。A类物料里选需求波动大的做MPS,效果最明显;需求稳定的关键物料,用MRP配合再订货点可能更省事。
这套模型的好处是,它把一个“上不上MPS”的问题,变成“哪些物料上MPS、哪些不上”的精细化决策。很多客户会觉得“我公司业务复杂,一定要全面上MPS”,但真正上线后,全面MPS带来的维护成本远超预期。建议控制MPS物料数量,一般不超过物料总量的5%到10%,否则MPS就失去了聚焦关键的意义。
6. SAP里的配置与实操:从MRP类型到计划时栅
6.1 配置入口:后台加物料主数据,两头都要管
在SAP里落地MPS和MRP,最关键的是两块设置,缺一不可。
第一块是后台配置。MRP类型在事务代码OMI8里配置,MRP组在OMI9里维护。MRP组的作用是把一批具有相同计划参数(如批量规则、计划时栅、安全库存策略)的物料归到一个组统一管理,省得一个个物料去改。策略组在OPPQ等配置点维护,策略组决定独立需求的类型和处理方式。
第二块是物料主数据。用MM02进入物料主数据的MRP视图,设置MRP类型、MRP组、策略组、批量规则、计划时栅等字段。这里最常见的错误是只在后台配好了,物料主数据里的MRP类型还是空的,或者前后不一致,导致计划根本跑不起来。
6.2 常见MRP类型怎么选:PD、VB、M0、M1、M3、M4
很多同学看到一堆MRP类型就头大。这里我按实际项目选型经验,把常见几个类型的意思梳理清楚。
| MRP类型 | 名称 | 适用场景 | 说明 |
|---|---|---|---|
| PD | MRP自动再订货点 | 绝大多数普通物料 | 系统自动计算净需求,是SAP里最通用的MRP类型 |
| VB | 手工再订货点 | 低值C类料 | 库存降到再订货点时由计划员手工触发补货 |
| M0 | MPS + 再订货点 | 关键物料且需要安全库存控制 | 既跑MPS,又保留再订货点逻辑 |
| M1 | MPS(含相关需求) | 成品或关键半成品 | 最常用的MPS类型,跑MPS时参与运算 |
| M3 | MPS(不含再订货点) | 不想用再订货点的MPS物料 | 比M1少一个再订货点判断 |
| M4 | MPS(不含再订货点,不生成采购申请) | 成品层,采购需求留给MRP | MPS阶段不产生采购申请,避免计划员过早被采购单打扰 |
注意,M0、M1、M3、M4这些类型虽然是“MPS类型”,但它们仍然会参与MRP运行。区别在于,它们具有MPS的属性和运行入口。选哪个,取决于你想不想让这个物料在计划层被单独拿出来做产能确认。
我个人的经验:成品层用M1或M4居多,取决于希不希望MPS阶段直接出采购申请;关键半成品用M1或M0,配合再订货点做安全库存控制;原材料层几乎不会用MPS类型,直接PD就好。
6.3 策略组怎么选:10、40、50面向不同的需求源头
策略组是很多初学者最容易忽略的配置。它决定物料的需求来自预测还是销售订单,并影响MRP运行时的行为。简单归纳:
- 策略组10(按库存生产):适用于备库生产的成品,需求来源以预测为主。通常会配套使用MPS,让预测先进入MPS计划,而不是直接冲击MRP。
- 策略组40(按单生产):适用于完全按客户订单生产,销售订单是唯一需求来源。这种模式往往不需要MPS,直接MRP展开即可。
- 策略组50(按单装配):介于两者之间,成品按订单生产,半成品可以按预测备库,是MPS与MRP配合的典型场景。
策略组选错,最常见的后果是:明明想按订单生产,系统却不断用预测需求跑出一堆多余计划订单;或者反过来,按库存生产策略却看不到计划独立需求,MRP里全是空的。
6.4 计划时栅的正确用法和建议值
计划时栅字段在物料主数据MRP2视图里,单位是工作日,比如40就代表40个工作日内计划订单锁定。后台MRP组参数里有关于计划时栅内计划订单是否自动调整的规则,要确认“锁定”行为是真正生效的。
建议值上,我的经验是:计划时栅≥关键物料的生产提前期+采购提前期,再留一定缓冲。比如某装配件提前期14天,关键进口件采购提前期60天,那计划时栅至少设到75天左右,才能保证一个完整的采购周期内计划不被反复改。设短了,采购还没来得及下单,计划又变了,时栅失去意义;设长了,销售临时插单也没法柔性响应。具体天数要通过仿真和试跑调整,没有标准答案。
6.5 日常操作事务代码清单
最后整理一份日常最常用的事务代码清单,方便你拿到项目里对照使用。
- 总MRP:MD01(经典MRP)、MD01N(S4/HANA MRP Live)
- 单物料MRP:MD02、MD02N
- 单物料单层展开:MD03、MD03N
- 总MPS:MD40
- 单物料MPS:MD41
- 单物料单层MPS:MD42
- 库存/需求清单:MD04
- 工作中心产能负荷:CM01(看工作中心的与产能对比)
- 计划订单处理:MD13、CO40
- MRP清单查看:MD05、MD06
在S4/HANA项目里,我强烈建议优先用MD01N、MD02N这类新事务代码,背后是MRP Live,跑批速度和解算逻辑已经和经典MRP有差异。你要是拿着ECC时代习惯去操作,容易在订单调整细节上看走眼。
7. 我踩过的坑和绕坑方法:MPS不是“多跑一遍MRP”
7.1 坑一:跑完MPS直接跑MRP,粗能力检查被跳过了
这个坑我见过不止一次。客户配置了MPS,也规范地跑MD40,但跑完以后以为万事大吉,立刻跑MRP,完全不看工作中心的负荷情况。结果MPS计划订单照常成为下层需求来源,可关键设备的产能根本无法支撑这些计划订单,到生产执行时才发现设备超载、班组要疯狂加班。
绕坑方法很简单:把“跑完MPS之后必须做RCCP”写进用户的月度业务流程里。计划员用CM01查看关键工作中心的负荷,超载就调整MPS计划订单,再重新看负荷,直到基本平衡,最后才允许跑MRP。这一步在蓝图访谈时就要和客户业务人员达成一致,还要写进操作手册,否则上线后第一个月就会出乱子。
7.2 坑二:S4/HANA里计划逻辑变化,还拿ECC的老经验生搬硬套
ECC时代的MRP和S4/HANA里的MRP Live,虽然核心算法一脉相承,但运行机制不同。MRP Live是内存内计算,跑批速度和向后排程的逻辑更强,并且支持“重新检查计划订单”等增强功能。S4里计划订单的数据模型也变了,新增了日期相关字段,报表的取数方式也改了。
有个客户从ECC升级到S4后,原来每天固定跑MD01的节奏直接复制到新系统,结果跑批时间倒是快了不少,但计划订单的日期和数量出现了细微差异。原因就是MRP Live的向后排程逻辑考虑了产能,在瓶颈日期会自动推迟计划订单。这是新功能带来的行为变化,不是bug。所以到S4项目里,一定要花时间重新梳理计划流程,而不是“代码不变就行”。MRP类型、策略组、计划时栅这些基础配置可以保留,但运行方式和解算逻辑要重新验证。
7.3 坑三:策略组和MRP类型不匹配,计划订单满天飞
有家客户成品层的MRP类型设成了M1(MPS),策略组却选了40(按单生产)。按单生产意味着需求来源是销售订单,按理直接MRP展开就够了,但M1的存在让这个物料又被识别为MPS物料,计划员每次跑MD40,都会看到这个物料反复出现。更麻烦的是,销售订单的交期波动会让MPS计划订单频繁调整,车间安排无从下手。
后来我们调整了方案:既然是纯按单生产,MRP类型改成PD,策略组保持40,不再参与MPS。MD40跑完,整个成品层不再出现在MPS清单里,计划员轻松一大截。这个教训说明:MRP类型和策略组不是两张独立的配置表,它们必须互相匹配。MRP类型决定“这个物料以什么逻辑算需求”,策略组决定“需求从哪里来”。两者冲突时,SAP不会报错,但业务逻辑会“拧巴”。
7.4 坑四:计划时栅设置不当,MPS缓冲区形同虚设
计划时栅这个字段,设置起来不起眼,但它直接决定MPS的稳定性。有个客户的MPS物料计划时栅设成了10个工作日,而它的关键进口件采购周期是70天。MPS计划订单在10天之后就可以被重算,导致每次跑MRP,70天以外的采购申请都可能被调整。采购部门天天收到计划变更,怨声载道。
绕坑方法前面说过:计划时栅要覆盖“生产提前期+最长采购提前期+缓冲期”。这个客户后来把时栅调到80个工作日,锁定期内的计划订单不再被MRP重算,采购终于能安安稳稳下长单了。当然,时栅调长的代价是柔性下降,所以上线前最好用历史数据做几轮模拟,找出“稳定”和“柔性”的平衡点。
7.5 绕坑自查清单
最后分享一份自查清单,是我做项目时用来检查计划配置是否到位用的,对照着看可以少踩不少坑。
- 物料主数据MRP类型是否与策略组匹配(MPS+按库存生产,PD+按单生产)。
- MPS物料数量是否控制在总物料量的5%到10%,是否都是A类关键物料。
- MPS物料是否设置了合理的计划时栅,时栅是否覆盖采购+生产提前期。
- 是否定义了MPS运行后的RCCP检查流程,是否有专人负责CM01负荷分析。
- MRP运行节奏是否明确(日跑批还是周跑批),是否避开班次切换或跨日频繁操作。
- 是否清晰区分了MPS事务代码(MD40/MD41/MD42)和MRP事务代码(MD01/MD02/MD03)的使用场景。
- S4/HANA项目是否重新验证过MRP Live下的计划订单日期逻辑。
- MD04库存/需求清单里是否能让计划员一眼看出MPS计划订单和普通MRP计划订单。
把这份清单走一遍,计划配置的底层逻辑就不会乱。MPS和MRP的区别,说到底不是两个英文缩写的问题,而是一整套“分层计划、逐层确认”的思维方式。SAP PP学到最后,最重要的不是你记得多少事务代码,而是你能不能在复杂的业务里,准确判断哪一层需要计划员介入做决策,哪一层直接交给系统自动展开。想通了这一点,MPS和MRP这个坑,你就算真正绕过去了。