简介:面向SAP实施顾问、财务成本控制及生产计划人员,文档围绕按销售订单采购生产的系统实现,梳理了从后台配置到前端操作的全链路要点。正文以无差异模式和有差异模式两种业务场景为框架,覆盖生产订单结算、销售订单成本控制、结果分析与结算等相关配置,并逐一演示创建物料、BOM、工艺路线、销售订单,按单采购,生产订单处理,发料、报工、收货、发货过账、开票,以及成本中心费用过账、成本要素分割和实际作业价格计算重估等关键操作。内容既适合熟悉SAP基础、需要落地按单结算流程的顾问作为配置手册,也可供关键用户快速了解操作顺序与业务闭环。资源为单个Word文档,大小2.91MB,目录结构清晰、步骤编号明确,便于按模块查阅。已有617人学习下载,适合在项目准备或上线支持阶段作为参考。
1. 按销售订单采购生产,真正的关键在于让需求源“只有一个”
很多企业推进“按销售订单采购生产”时,最直观的困惑是:明明按销售订单建了单,MRP跑完,MD04里却同时跳出独立需求和客户需求,计划员根本分不清哪张单该催。这个问题的根源不在MRP,而在主数据和SD侧的需求传递配置没有形成闭环。按销售订单采购生产(MTO/ATO)的核心,是把销售订单变成采购和生产唯一的需求触发器:成品按单生产,半成品和原材料按单采购、按单装配。本文面向负责配置落地的SD/MM/PP顾问,以及要接手这套方案做日常运维的同事,从主数据、销售项目类别、MRP参数、生产执行到结算,把最小可运行闭环讲清楚,并列出几个我踩过多次的坑。
2. 主数据与销售侧配置:让销售订单在MD04里留下痕迹
按销售订单的闭环能不能跑通,一半以上在销售订单创建之前就已经决定了。我见过的翻车项目中,十有八九是物料主数据MRP视图、销售订单项目类别和需求类型这三个对象没有对齐。下面按配置顺序展开。
2.1 物料主数据MRP视图:先定四件事
按单生产的物料不能沿用按库存生产的默认参数。用MM01/MM02进入物料主数据的MRP视图,至少要确认四个字段:
| 字段 | 设置值 | 作用 |
|---|---|---|
| MRP类型 | PD | 让物料参与MRP运算;设成ND就不会产生任何计划订单 |
| 采购类型 | E(自制)/ F(外购) | 决定计划订单转生产订单还是转采购申请 |
| 批量过程 | EX 或 PK | 按单场景常用EX(按单批量,一张销售订单生成一张计划单) |
| 策略组 | 20 / 70 | 决定需求来源是独立需求还是客户需求 |
说明一下:策略组20是纯按单生产(MTO)的经典策略,所有需求都挂在销售订单上;策略70在按单装配(ATO)场景里更常见,成品交期确定后,组件和采购件才在装配层被销售订单触发。不要把成品和采购件都设成同一个策略组,否则通用件会被每一张销售订单反复采购。
接着是MRP2视图里的“计划交付时间”和“收货处理时间”。按单生产建议把这两个时间按采购提前期和生产周期填准,不要图省事全填0。因为销售订单交期的可用性检查依赖它们,填太小会出现“客户订单确认了,采购还没下单”的情况。
另外一个容易被忽略的字段是MRP3视图的“可用性检查组”。很多项目在物料主数据销售视图里配置了可用性检查,但MRP3的可用性检查组没维护,结果VA01交期承诺是空的。按单生产必须让可用性检查参与ATP,否则“按单安排采购”就失去了交期依据。
提示:策略组在物料主数据是MRP3视图里的字段。同一个物料号不能同时兼容MTO和MTS两种模式。如果真有两种业务,要么拆两个物料号,要么单独维护一套策略组并接受额外的主数据管理成本,新项目不建议做混合策略。
2.2 销售订单项目类别:TAN和TAS的差别
销售订单项目类别决定需求是否传递到MRP。配置路径是:
- SPRO → 销售与分销 → 销售 → 销售凭证 → 销售凭证项目 → 定义项目类别
- 事务码 OVLI / OVZ1
标准系统里,TAN是普通库存销售,项目类别的需求传递默认不触发按单采购或按单生产;TAS则用于按单生产,会把销售订单需求复制为“客户需求”,由策略组里的需求类型决定它是否触发计划订单。如果不理解这条,最容易出现“销售订单建好了,MD04里像什么都没发生”。
检查项目类别时,要重点看四个位置:
- 项目类别组(Item Category Group):物料主数据销售视图里的项目类别组,是否和销售订单行项目类别匹配。
- 项目类别里的“需求类型”字段:如果它为空,销售订单不会建立客户需求。
- 复制控制(Copy Control):从销售凭证项目到计划行(Schedule Line)的复制规则要允许“需求传递”。
- 计划行类别的“MRP相关”标志:它必须允许MRP运算,否则计划行只做交货计划,不参与需求传递。
在TAS里,“主机数据/需求类型”通常被配置为KSV或类似的需求类型。这个字段不要自己乱改,应该和需求类配置放在一起看。销售订单项目类别配置界面里还有“独立需求”“订单库存”等选项,这些决定销售订单是直接消耗普通库存,还是先进入销售订单库存(特殊库存E)。
2.3 需求类型与需求类:客户需求是怎么变成计划订单的
配置路径在:
- SPRO → 物料管理 → 基于需求的计划 → 需求管理 → 需求类型 / 需求类
- 事务码 OMD5 / OMD6
常见流量是:销售订单项目类别TAS → 需求类型KSV(客户需求)→ 需求类725(按单生产客户需求)。需求类在不同SAP版本里显示名称略有差别,但核心作用一样:把销售订单的客户需求转换成MRP可以识别的需求来源。
需求类里有几个开关,我每次实施都要核对:
- “独立/汇总需求”必须关闭。否则MRP会同时看到独立需求和客户需求,产生重复计划订单。
- “与销售订单关联”必须打开。否则生产订单和采购申请无法追溯到销售订单号,后续按单发货和结算都会断链。
- “需求减少了”和“与制造订单相关”的配置要跟策略组匹配。有些项目把这里配成“独立需求”模式,结果VA01销售订单进去后,MD04显示的是IndReq而不是CustReq,整个逻辑就变了。
策略组中的“独立需求”行(一般是需求类型BSC)在按单策略下,应设置为“不生成MRP相关需求”。SAP标准策略20里,独立需求通常不参与MRP,只作为销售预测的参考。如果发现MRP把独立需求也纳入了运算,优先检查策略组里那行“需求类型”是否用了BSC。
2.4 用VA01做一次需求穿透验证
配置完成后不要急着跑大批MRP,先做最小验证:
- MM02检查成品、半成品、采购件的策略组和MRP类型。
- VA01创建一张销售订单,行项目必须走TAS或自定义的按单项目。
- 查看销售订单行项目的“计划行”页签,确认计划行类别有需求传递标志。
- 用MD04看成品物料:正确结果应该是“客户需求 + 计划订单(如果成品自制)或采购申请(如果成品外购)”。
- 展开看BOM下层组件:外购件应出现相应采购申请,自制件应出现计划订单或预留。
如果MD04里只有客户需求,没有计划订单,回到2.1和2.3检查;如果MD04里同时出现独立需求,回到2.3关闭独立需求。这一步是整套系统的后悔药,配置阶段改起来只需几个事务码,等上线后发现问题再改,就是主数据批量调整,耗时完全不一样。
2.5 用LSMW批量导入前,先检查策略组和MRP组
很多项目会用LSMW从Excel批量导入物料主数据,这一步很容易把“策略组”漏掉或导错。LSMW录制MM01时,MRP3视图的“策略组”“MRP组”字段经常由于屏幕隐藏或录入顺序不对而丢失。导入完成后不要只看“成功N条”,要抽查MD04。
我的习惯是:LSMW导入后,挑三个典型物料——成品、半成品、外购件——分别跑一次MD04。如果成品能触发计划订单,外购件能触发采购申请,再放量导入。否则等跑完大批量再返工,比重新录一段LSMW还痛苦。
3. MRP运算与订单转换:把销售订单变成采购申请和生产订单
主数据和销售侧配置完成,只是让销售订单“有需求”。要把需求变成生产工单和采购订单,还需要理解MRP运算和转换动作。这一章是操作密度最高的部分。
3.1 策略20和策略70到底怎么分工
先讲选型理由。按单采购生产最常见两种模式:
- 纯按单生产(MTO):最终成品用策略20,从成品到最底层原材料都挂着销售订单需求。特点是产品定制程度高、库存低、交付周期长。适合大型机械、成套设备、定制化工配方。
- 按单装配(ATO):成品用策略70或类似策略组,半成品和通用件按库存生产,只有专用物料和采购件按销售订单触发。特点是交付周期更短,通用件库存相对可控。适合有模块化BOM的行业,比如电子装配、工业阀门。
在同一个工厂里,可以按物料层级混合策略:成品用策略70,通用半成品用策略10,专用采购件用“策略20的采购件逻辑”。但要注意,策略70本身会忽略独立需求,销售订单进入后直接生成最终装配层需求,下层按需展开。如果你要的是“收到销售订单才开始采购”,策略20更直接;如果你要的是“销售订单确认交期后,用库存的通用件装配”,策略70更合适。
3.2 跑MRP前必须调的两个参数
MRP运算的事务码不只是MD01。按单生产环境里,我通常用MD03/MD02做单点测试,用MD07做批量检查。
三个事务码的区别:
- MD01:全厂MRP,适合夜间批处理。它会跑所有MRP相关物料。
- MD02:单个物料MRP,适合调试和增量计算。
- MD03:单层MRP,只展开该物料的下层BOM,适合查某一层的计划结果。
- MD07:物料需求清单,可以理解为MD04的汇总视图,能同时看到多颗物料的计划订单、采购申请和客户需求。
运行MRP时,处理代码三个值要理解:
- NETCH:净变化计划,只处理有变动的物料,日常最常用。
- NETPL:计划周期内净变化,要配合计划周期字段。
- NEUPL:重新计划,会把所有物料重新算一遍,适合初始化或大版本切换,不建议日常使用。
按下单生产场景,我一般把“计划周期”设定为采购提前期+生产提前期+安全缓冲天数。比如采购提前期25天、生产提前期10天、缓冲5天,计划周期至少40天。如果计划周期太短,SAP会在周期边界外给出“重新计划”提示,但不会自动创建计划订单,容易漏单。
3.3 从计划订单到采购申请和生产订单
MRP跑完后,MD04里会出现两类计划要素:
- 外购件:计划订单行显示为“采购申请”(PR),行类型是“BckOrd”或“PldOrd”。
- 自制件:计划订单行显示为“计划订单”(Planned Order)。
外购件的标准转换路径是:MD04选中采购申请 → 菜单“后续功能” → “采购订单/计划协议”,事务码ME57可以批量处理。转完采购订单后,PR会变成采购订单项,MRP控制器能看到“采购订单”行。
自制件的标准转换路径是:MD04选中计划订单 → 后续功能 → “转换生产订单”,事务码CO40逐单转,CO41批量转。转换完成后,计划订单消失,出现生产订单,生产订单头会带上销售订单号。
生产订单类型要选择“按单生产”适用的订单类型。不同行业用的不同,常见是PP01/P02或者自定义的MTO订单类型。关键检查点是生产订单头的“销售订单”字段,如果为空,即使计划订单上有销售订单号也是配置丢失。
3.4 MPS物料别漏看
如果工厂启用了MPS(主生产计划),MD07里会将MPS物料单独分层显示。很多项目把关键成品设为MPS物料,跑MRP时MD01/02会识别“主计划”和“物资计划”两个层。MPS物料的需求先由销售订单触发,下层组件再由MPS的计划订单展开。
运维时最常见的坑是:业务员看到MD04搞不清为什么车间工单没出来,实际上在MPS层已经下达了计划订单,但下层物料还没有继续跑MRP。解决办法是让计划员每天先看MD07,区分“主计划层”和“下层采购生产”,不要只盯MD04。MD07可以在“批量”页签按MRP控制器过滤,比一个个看物料ID高效得多。
4. 生产与采购执行:按单发料、收货与结算的配置清单
MRP和订单转换完成后,系统里已经有挂销售订单的生产订单和采购申请。真正的生产现场执行往往在这里卡住:发料发不出来、收货收到普通库存、月底差异不知道挂给谁。第四周我一般全放在执行层的配置和操作上。
4.1 生产订单下达:确认销售订单号跟着走
用CO02打开生产订单,在“订单头”附加数据里能看到销售订单号和销售订单行项目。如果看不到,说明计划订单转换前没有把销售订单信息传递过去。切到“组件”页签,BOM组件预留也会引用销售订单。
生产订单下达前,需要做两个检查:
- 批次确定:如果组件按批次管理,检查MB61是否把批次确定规则配好。
- 工序排程:如果车间采用倒排计划,需要确认“减少/增加生产时间”的调度参数。按单交期是硬约束,建议用“倒排”(Backward scheduling),从销售订单交期往回排。
下达操作可以手工用CO02“下达”按钮,也可以用批量下达事务码CO05/CO48。上线初期不要急于配置自动下达,先手工跑两周,积累一套“哪些订单可以自动下达”的规则再收紧。
4.2 按单发料:特殊库存、移动类型和预留
按单生产的组件发料,最常遇到“库存明明有,MIGO却发不出”的报警。原因是库存类型不对:按单生产的需求挂在销售订单库存(特殊库存E),而你仓库里的实物在普通非限制库存里。
MIGO发料时,移动类型用261(生产订单选发料)或262(倒冲发料)。如果组件需求挂在销售订单库存,MIGO中不需要手工输入销售订单号,因为生产订单组件预留已经带了销售订单库存字段。但前提是生产订单确实带销售订单号,否则组件预留的“特殊库存”是空的,MIGO会尝试从普通库存发货。
如果确实需要从普通库存发到销售订单库存,要走库存转储(移动类型413E或411E/451E)先把货转到销售订单专用库存。这个操作业务流程上要确认清楚,不要默认系统会自动调拨。
倒冲发料在流程制造业很常见,配置点在工作中心的“自动减少”标志。注意倒冲时如果组件有反冲,将使用移动类型261的反向移动类型。倒冲数量和按单数量不一致,月底差异会很麻烦,建议保留手工确认。
4.3 采购件收货:从按单PR到MIGO的特殊库存入库
外购件如果MRP生成的是采购申请且挂了销售订单,那么创建采购订单时,采购订单行项目会带“销售订单”字段。收货时,MIGO选择“采购订单”参考,系统会根据采购订单的销售订单库存标志决定入库库存类型。如果采购订单行没有销售订单库存标志,收货会进入普通库存,后面的生产订单发料就发不出去。
所以采购员的日常操作要固定为:ME23N创建采购订单时,检查行项目“采购订单文本”旁边的“销售订单”标签,确认销售订单号存在;MIGO收货后,在MB51查看物料凭证,确认“特殊库存”显示为“E/销售订单”而不是空。
另外,如果采购件要做质检,MIGO收货可以用移动类型103(收货至质检库存)。质检放行后,用105转到非限制库存。如果质检放行是批量批次的,还要注意批次状态,销售订单库存中的“非限制”与质检库存不能混淆。
4.4 结算配置:差异挂给销售订单,不要挂给成本中心
按单生产的生产订单,结算规则需要配置为“按照销售订单”或“按订单的项目”。配置路径是生产订单类型里维护“结算参数文件”。如果设成按生产订单结算,差异会挂在生产订单上,月底KO88结算后挂到生产成本中心,就会出现“AA/BB/CC部门承担了定制订单差异”的情况。
在项目配置阶段,我会做如下设置:
- 结算参数文件:分配结算类型“FUL”或“PER”给按单生产订单。
- 结算规则:生产订单的结算接收方选择“销售订单”或“销售订单项目”,用百分比100%。
- 成本核算准则:如果使用CO-PA,差异可能需要结算到获利能力段。没有CO-PA的工厂,至少按销售订单结算。
月底用KO88批量结算生产订单,结算完成后可以查看“差异”报表。如果发现差异没有结转,检查订单状态是否“已DLV”或“已TECO”,成本核算是否“已结算”。这三个状态缺一不可。
4.5 评估类与总账科目缺失,MIGO过账会直接叫停
热词里常看到“SAP评估类与总账科目”和“sap migo过账增强”,这两个问题在按单生产执行阶段最容易同时爆发。物料主数据没有评估类,或者OBYC的科目表里没配“BSA/BSP/GBB”相关事务,MIGO收货时会报“科目确定无结果”或“评估类不完整”。现象很直观,原因往往就是LSMW导入主数据时漏了评估类或物料类型没有映射到评估类。
解决步骤:
- MM03查看物料主数据会计视图,确认评估类已填。
- 如果为空,MM02补填评估类,并通过OMT4? 再到OBYC里补“库存记账”相关科目。
- 检查“GBB”配置里的“VBR”或“AUA”等科目,以及“BSX”存货科目。一个评估类对应一组总账科目,不要只配BSX。
- MIGO增强如果报“自定义增强程序错误”,要看增强实现是否启用,不是科目问题。
这一层是典型的“配置差一行,收货翻一车”。建议在上线前用一张测试采购订单做一次MIGO收货,把科目解析过程完整跑通。
5. 按销售订单采购生产最容易踩的5个坑:现象、原因、解决
以下都是我在实施和运维中反复遇到,且具备共性的坑。每条按“现象→原因→解决”写,方便你在现场排查。
5.1 销售订单行项目没有触发MRP
现象:VA01创建销售订单,保存后查MD04,只有“客户需求”一个行,或者干脆连客户需求都没有;MRP跑完,计划订单/采购申请不生成长。
原因:销售订单项目类别没有分配需求类型,或者计划行类别“MRP相关”为空;也可能是物料主数据MRP类型设成了ND。
解决:先查销售订单行项目“项目类别”字段,如果是TAN,改成TAS或自定义按单项目类别;再到OVLI里确认项目类别的“需求类型”字段有值;最后到MM02检查物料主数据MRP类型是否为ND。一般按“项目类别→计划行→需求类型→MRP类型”的顺序排查,十分钟内能定位。
5.2 策略组里独立需求没关干净,MRP跑出双份计划
现象:一张销售订单只有一个客户需求,MD04里却同时出现客户需求和独立需求,MRP跑完生成两个相同计划订单,采购员重复下单。
原因:策略组里独立需求行(BSC)仍是“MRP相关”,或需求类的汇总逻辑重复。
解决:SPRO → 需求管理 → 策略 → 定义策略组,打开对应策略组,查看“独立需求”那一行的需求类型,若设为BSC且参与MRP,可以把它改成不运行MRP的需求类型,或者直接在需求类中把“独立需求”的“MRP相关性”改为“无”。还要检查物料主数据里是否同时维护了独立需求MRP组。改完后重新跑MRP,确认MD04只出现客户需求。
5.3 MIGO 261发料时提示“销售订单库存不可用”
现象:生产订单下达后,MIGO发料报“物料在销售订单库存中不可用”或“物料库存不可用”;MB51查不到有问题的发料凭证。
原因:按单生产的需求挂在销售订单库存(特殊库存E),但实物库存要么在非限制普通库存,要么还没收货到销售订单库存;也可能是生产订单组件预留没有带销售订单号。
解决:先查MD04的选择字段“库存类型”,确认销售订单库存是否有可用数量。如果销售订单库存为0,做MIGO 413E/451E库存转储,从普通库存转到销售订单库存。如果销售订单库存有数量仍发不出,检查生产订单“组件”页签里预留的科目分配,确认“销售订单”字段非空。不要直接在MIGO里手工改移动类型,那会把发料变成无参考发料,账实容易乱。
5.4 LSMW导入主数据后,采购申请“质量”或“评估类”空白
现象:LSMW导入物料主数据完成后,MRP能跑出采购申请,但采购申请无法转采购订单,提示“单位缺少质量信息”或“账户设置不完整”;MIGO收货时无法过账。
原因:LSMW录制时只录了MRP视图和采购视图,漏了会计视图的评估类,或者评估类对应OBYC科目缺失。
解决:在LSMW里补充物料主数据会计视图的字段,重新导入一次;如果只需要补个别物料,用MM02手工补评估类。然后到OBYC里检查BSX、GBB、PRD相关科目组,确保评估类与科目映射存在。如果MIGO过账增强有自定义校验,还要检查增强是否对“评估类为空”的物料提示错误。这个坑在正式上线前必须通过一次完整测试发现,否则上线首周就会天天被打爆。
5.5 MD07显示计划订单但车间工单没生成
现象:计划员看MD07,销售订单对应的计划订单都存在;车间反馈没收到工单,复查发现计划订单还挂在“计划订单”状态,没有转为生产订单。
原因:可能是MD07里看到的计划订单是“采购型”计划订单(行类型为“PlOrd”),但公司没有配置MRP自动转换到生产订单;也可能是MPS层计划订单未下达,下层物料没有MRP展开。
解决:确认计划订单采购类型:MD04选中计划订单,看“采购类型”是E(自制)还是F(外购)。如果是自制,用CO40/CO41批量转换。如果工厂启用了MPS,再用MD04检查“MPS”标志,MPS计划订单要先下达或释放,否则下层组件不会展开。这个问题的本质不是MRP没跑,而是“计划订单”和“生产订单”是两个生命周期阶段,一定要在SOP里写明转换时间和责任人。
6. 进阶验证:用MD07和MD04做日清,别把差异留给月结
按单生产上线后,最忌讳的计划员把所有问题都留到月底看差异。我的习惯是每天一上班用MD07做一轮日清,把“销售订单→计划订单→生产订单→采购申请”这条链逐层看一遍。
6.1 MD07日清的核心用法
MD07是物料需求清单,比MD04更适合批量检查。日清时按MRP控制器过滤,只看“有客户需求”的物料。在MD07列表里,关注三列:
- 客户需求数量:销售订单传入的需求。
- 计划订单/采购申请数量:MRP已经生成的供应。
- 差异:需求减去现有供应,如果长期不等于0,说明需求没有闭环。
计划员每天只需要盯“差异不为0”的物料。如果差异一直为0,但某天突然变成正数,多半是销售交期变更或BOM修改导致。
6.2 每周做一次“SO-PROD-PO”追踪
用事务码MD04进入销售订单,右键“信息”查看计划订单号,再从生产订单头追“销售订单”字段。有条件的话,可以让IT顾问帮忙做一个简单的Z报表,从VBAK、VBAP、PLAF、AUFK、EKPO几张表把销售订单、生产订单、采购订单关联起来。
我习惯每周五输出一张Excel,列标题固定为:销售订单号、行项目、物料、数量、交期、生产订单号、生产订单状态、采购申请号、采购订单号、采购订单状态。这张表能一眼看出哪张销售订单卡在哪个环节。它不复杂,但对管理按单生产的节奏非常有效。
6.3 自动化验证的边界
在SAP GUI Scripting普及后,可以录制MD07查询过程,用Python脚本定时抓取列表数据,再和ERP外部的MES/APS做比对。但我的经验是,自动化脚本适合“数据抓取”,不适合“代替计划员判断”。因为按单生产经常有交期提前、BOM临时变更、质检放行未完成等业务状态,这些MD07列表看不到,计划员的判断仍然是主体。
另外,如果是在SAP Fiori环境里,MD07不是必须的,可以用“物料需求计划”Fiori应用查看需求与供应概览,但MRP控制器过滤和明细下钻逻辑和经典GUI一致。第一套按单生产系统,我个人建议先让计划员用经典GUI跑三个月,再考虑迁移到Fiori或引入自动化。
最后说一个我自己的教训:早期做按单生产项目,只盯着策略组和MRP类型,忽略了对销售订单项目类别的验证,结果上线第一周有30%订单没生成采购申请,全厂计划员加了两天班。后来我把“VA01穿透测试”写进了项目交付检查表,不管多赶都先做这一步。希望这套配置思路和踩坑清单能帮到你,让按单采购生产的MRP链路真正可运行、可检查、可交接。
本文还有配套的精品资源,点击获取