简介:本资源是一份面向SAP顾问、制造企业IT实施人员及ERP初/中级学习者的MTO(按订单生产)业务全流程实操指南,系统解决定制化制造场景下销售订单驱动生产、专用料管理与MRP联动等核心难题。文档以原创手册形式展开,覆盖物料主数据配置(含MRP策略组20与个体需求标识1/2设置)、销售订单创建(VA01)、MRP运行与结果分析(MD41/MD04)、专用料采购(ME57/ZMIGO)、MTO生产订单全周期操作(CO01/MB1A/MB31)及SO间库存转移等6大模块,每步均标注关键事务码与配置要点。资源为1个1.21MB的Word文档(.docx),结构清晰、目录完整,含详细截图指引与参数说明,便于边学边练。目前已有5780人学习下载,是少有的从理论逻辑到SAP后台操作逐层拆解的MTO落地实践资料。
1. MTO 是什么?不是“接单就做”,而是把销售订单变成生产指令的整套控制逻辑
很多刚接触 SAP 的业务顾问或计划员,第一反应是:“MTO 就是客户下单我才做,和按库存生产(MTS)反过来不就完了?”——这恰恰是踩坑起点。MTO(Make-to-Order)在 SAP 中根本不是一种“松散的响应模式”,而是一套端到端受控的业务流:从销售订单创建那一刻起,系统就自动触发物料主数据检查、BOM 展开、工艺路线读取、产能预占、采购申请生成、工单释放控制、发货过账联动成本归集……漏掉任一环,轻则交期承诺失真,重则工单卡在“技术完成”却无法收货,成本迟迟无法结转。它真正解决的是“如何让每个客户订单都成为可追溯、可计划、可核算的最小生产单元”。适合制造业中定制化程度高、配置组合多、交付周期敏感的场景,比如工业设备集成商、特种车辆改装厂、模块化建筑构件供应商。如果你的业务里常出现“这个订单要加急”“那个配置没维护BOM”“工单做了但财务说没成本对象”,那不是流程问题,是 MTO 主干没搭稳。
2. MTO 业务落地的四大支柱:主数据、订单类型、需求传递、生产执行
MTO 不是靠一个配置开关就能启用的,它依赖四个强耦合的主干配置。缺一不可,且顺序不能乱。我一般会按“主数据 → 订单类型 → 需求传递 → 生产执行”四步推进,每步验证通过再进下一级,否则后面全盘返工。
2.1 物料主数据必须开启“按订单生产”标识并锁定关键字段
MTO 的起点是物料。不是所有物料都能走 MTO,必须在物料主数据中显式声明。关键操作在MM01/MM02 → “基本视图” → “MRP 视图”:
MRP 类型:选择 'PD'(PD = Planning with dependent requirements,这是 MTO 的标准类型) MRP 控制者:必填,用于后续计划员职责划分 批量大小:建议设为 'EX'(Exact lot size),避免系统按固定批量生成多余需求 特殊采购类型:设为 '50'(Production order),明确指向内部制造而非外协或采购提示:MRP 类型不能选 'ND'(No planning)或 'VB'(Manual reorder point planning),否则销售订单不会触发计划运行;也不能用 'X0'(Reorder point planning),那是 MTS 的逻辑。
特殊采购类型 = 50是硬性要求,它决定了系统后续生成的是生产订单(PP01),而不是采购申请(ME51N)。
更关键的是字段锁定:进入MM02 → “会计视图1” → 点击“更改”按钮右侧的“字段选择” → 勾选“冻结物料主数据”,然后在“MRP 视图”中将MRP 类型、特殊采购类型、批量大小设为“显示/不可更改”。为什么?防止业务人员误操作改回 MTS 模式,导致同一物料混用两种模式,BOM 展开错乱、成本对象丢失。
2.2 销售订单类型必须绑定 MTO 特定的计划行类别与需求类
订单类型(Order Type)是 MTO 的“门禁”。它决定这张销售订单是否被系统识别为“需要驱动生产”的源头。常见错误是直接复用标准类型 OR(Standard Order),但它默认绑定的是 MTS 的需求类(如 KE),不会触发生产订单创建。
正确做法是复制标准类型并重定义(OVAK 事务码):
| 字段 | 推荐值 | 说明 |
|---|---|---|
| 订单类型 | ZOR1(自定义,如 ZOR-MTO) | 避免与标准类型混淆 |
| 计划行类别 | '0002'(Standard item, make-to-order) | 这是 SAP 内置的 MTO 行类别,强制关联生产订单 |
| 需求类 | 'KE'(不适用)→ 改为 '0001'(Make-to-order requirement) | 必须匹配,否则 MD04 中看不到需求传递 |
| 项目类别确定 | 检查 VOV7,确保 ZOR1 对应的项目类别为 'TAN'(Standard item)且勾选 "Schedule line allowed" | 否则无法维护交货日期 |
注意:
计划行类别 = 0002是核心。它告诉系统:“此行物料需按订单生产”,从而在保存订单时自动调用MD04需求传递逻辑,并在后台生成计划订单(Planned Order)。若此处仍为 '0001'(Standard item, make-to-stock),哪怕 MRP 类型设对了,系统也只生成库存需求,不拉通生产。
2.3 需求传递:从销售订单行到计划订单的自动触发链
MTO 的灵魂在于“销售驱动生产”,这个驱动不是人工点按钮,而是由后台作业自动完成。关键路径是:销售订单保存 → 系统调用需求传递程序(MD04 或后台作业 MD01)→ 生成计划订单(Planned Order)→ 计划员确认后转为生产订单(Production Order)。
触发条件有三:
- 销售订单行状态为“已确认”(Confirmed);
- 物料主数据中 MRP 类型 = PD,特殊采购类型 = 50;
- 订单类型绑定的计划行类别 = 0002。
验证方法:创建一张 ZOR1 类型的销售订单,保存后立即执行MD04,输入物料号与工厂,查看“需求”标签页。正常应看到一条类型为KE(注意:此处显示为 KE 是历史兼容名,实际含义是 MTO 需求)的需求,其“需求来源”指向你的销售订单号(如123456789),且“需求数量”与订单行一致。
若未出现:
- 检查订单是否已过账(VA01 保存即触发,无需 VA02 修改);
- 检查物料主数据中“MRP 视图”是否激活(绿色对勾);
- 检查事务码 OVZ2 中,该订单类型是否启用“需求传递”。
2.4 生产执行:计划订单转生产订单的控制点与参数
计划订单(Planned Order)只是“待办事项”,必须转为生产订单(Production Order)才能驱动车间。这个转换不是全自动的,必须由计划员在MD04 或 CO41中手动确认,这是 MTO 的关键控制点——它给了计划员干预产能、调整优先级、合并相似订单的机会。
转换时需关注三个参数:
- 调度类型(Scheduling Type):必须为
01(Forward scheduling),确保交期从订单创建日正向排程,而非反向倒推(02Backward scheduling 适用于严格交期承诺场景,但易导致产能冲突); - 生产版本(Production Version):必须在物料主数据 MRPI 视图中维护,且状态为“有效”。未维护则转换失败,报错
No valid production version found; - 批次管理(Batch Management):若物料启用了批次管理(MRP 视图中
Batch management req.= X),则生产订单必须指定批次,否则无法下达(CO02)。
执行转换命令:在 MD04 中双击计划订单 → 点击“转换为生产订单”按钮 → 输入工厂、生产版本、调度类型 → 保存。系统生成订单号(如100000123),此时状态为CRTD(Created),需经 CO02 下达(Release)后才可发料、报工。
3. MTO 配置避坑指南:5 条血泪经验,每条都来自真实翻车现场
MTO 是 SAP 中配置容错率最低的模块之一。表面看只是几个字段勾选,实则环环相扣。以下是我带过的多个模拟项目 X 中反复出现的 5 类高频问题,按“现象 → 原因 → 解决”结构整理,全是能立刻复现、立刻验证的真问题。
3.1 现象:销售订单保存后,MD04 查不到任何需求
原因:订单类型(ZOR1)在事务码 OVZ2 中未勾选“需求传递(Requirement Transfer)”选项。
解决:SE38 运行程序RVORDERM(或直接进 OVZ2),找到 ZOR1,勾选“需求传递”复选框,保存。注意:此设置独立于订单类型定义,必须单独激活。
3.2 现象:MD04 显示需求,但类型为KE(库存需求),而非预期的MTO需求
原因:物料主数据中“特殊采购类型”未设为50,而是留空或设为00(无特殊采购)。
解决:MM02 进入该物料 → MRP 视图 → 将“特殊采购类型”明确改为50→ 保存。切记:50是唯一合法值,01(Subcontracting)或20(Stock transfer)均无效。
3.3 现象:计划订单可生成,但转换生产订单时报错No valid production version found
原因:物料主数据中虽维护了 BOM 和工艺路线,但未在 MRPI 视图中指定“生产版本”,或指定的版本状态为“已删除”。
解决:MM02 → MRPI 视图 → “生产版本”字段输入一个四位数编号(如0001)→ 进入事务码 C223 维护该版本,确保“有效性”起始日期早于当前日,“状态”为“有效”。
3.4 现象:生产订单下达(CO02)后,无法进行发料(MB1A),提示No stock available for component
原因:组件物料未启用“按订单生产”,其 MRP 类型仍为ND或VB,导致系统不为其生成预留库存(Reservation),发料时找不到可用库存。
解决:对所有 BOM 中的组件物料,逐一执行 MM02 → MRP 视图 → 将 MRP 类型改为PD,特殊采购类型设为50。MTO 是全链路行为,组件也必须 MTO 化。
3.5 现象:发货过账(VL02N)后,成本中心未归集生产订单实际成本,CO88 显示“无结算凭证”
原因:生产订单类别(Order Type)未分配“结算配置文件(Settlement Profile)”,或配置文件中未勾选“结算至销售订单”(Settle to Sales Order)。
解决:Ko88 进入订单 → 查看“结算”标签页 → 若为空,则事务码 KOB1 查找该订单类别(如PP01)→ 进入 OKO7 维护结算配置文件 → 勾选“结算至销售订单”并指定“结算规则”为01(按比例)。
4. MTO 与销售订单的强绑定:如何让每个工单都精准归属到客户订单
MTO 的终极价值,是实现“一个订单、一个工单、一笔成本、一次交付”。但默认配置下,生产订单只记录销售订单号,不自动继承其利润中心、销售组织、分销渠道等财务属性,导致成本分析颗粒度粗、无法按客户维度核算毛利。必须通过“订单增强”打通这一链路。
4.1 核心机制:使用用户出口 EXIT_SAPLCOZF_001 实现销售订单字段自动带入
SAP 标准不支持在生产订单抬头直接写入销售组织等字段,但提供了一个标准出口:EXIT_SAPLCOZF_001(在 CO01 创建订单时触发)。我们在此处编写 ABAP 逻辑,从销售订单抬头表VBAK中读取字段,写入生产订单抬头表AFKO。
关键代码片段(ABAP):
* 获取销售订单号(来自计划订单的参考字段) DATA: lv_vbeln TYPE vbeln_va. SELECT SINGLE vbeln FROM afpo INTO lv_vbeln WHERE aufnr = p_aufnr AND posnr = '000000'. IF sy-subrc = 0. SELECT SINGLE vkorg vtweg spart FROM vbak INTO (afko-vkorg, afko-vtweg, afko-spart) WHERE vbeln = lv_vbeln. IF sy-subrc = 0. * 将销售组织、分销渠道、产品组写入生产订单抬头 afko-vkorg = vbak-vkorg. afko-vtweg = vbak-vtweg. afko-spart = vbak-spart. ENDIF. ENDIF.逻辑说明:
p_aufnr是当前正在创建的生产订单号;afpo是计划订单表,其中vbeln字段存储了原始销售订单号;vbak是销售订单抬头表。这段代码在订单创建瞬间,将销售订单的三大销售组织字段(VKORG/VTWEG/SPART)回填到生产订单抬头,确保后续 CO-PA(获利能力分析)可按销售组织维度归集成本。
4.2 验证方法:用 CO03 查看生产订单抬头字段是否已填充
创建一张 ZOR1 订单 → 通过 MD04 转为生产订单 → 进入 CO03 查看该订单 → 切换到“附加数据”标签页 → 检查字段Sales Org、Dist. Channel、Division是否已显示值。若为空,说明出口未生效,需检查:
- 出口是否已激活(SMOD 中查找
COZF0001并激活); - 用户增强程序是否已分配给该出口(CMOD 中分配);
- ABAP 代码中
afko-结构体赋值是否正确(必须是afko-vkorg,非afko~vkorg)。
4.3 进阶技巧:用结算规则实现“销售订单级成本闭环”
仅带入抬头字段还不够,成本必须最终结算回销售订单。标准结算规则01(按比例)只能结算到成本中心或获利能力段,无法直连销售订单。需自定义结算规则:
- 事务码OKO7→ 创建新结算规则(如
ZSO)→ 在“接收方”中选择Sales order; - 在“分配结构”中,指定“接收方对象”为
Sales order,并勾选“按销售订单行项目结算”; - 在生产订单中(CO02),进入“结算”标签页 → 手动指定结算规则为
ZSO。
这样,当执行 CO88 结算时,系统将生产订单的实际成本(材料、人工、费用)100% 归集到原始销售订单行项目,财务可在KE30中直接查询“某客户某订单的总成本与收入”,毛利一目了然。
5. MTO 业务的验收清单:6 个必检点,少一个都不算上线
MTO 不是配完就能用,必须用一套可量化的验收清单逐项击穿。我在某高校实验室带学生做模拟项目 X 时,就用这张表卡住所有“以为好了其实没好”的假成功。它不讲原理,只问结果——每个点都对应一个可执行、可截图、可回溯的操作。
| 序号 | 验收点 | 操作步骤 | 预期结果 | 失败后果 |
|---|---|---|---|---|
| 1 | 销售订单创建即触发需求 | VA01 创建 ZOR1 订单 → 保存 → 立即执行 MD04 | MD04 中出现一条类型为KE的需求,来源为该订单号 | 需求不传递,生产永远滞后 |
| 2 | 计划订单可转生产订单 | MD04 中双击该需求 → 点“转换为生产订单” | 成功生成订单号,状态为CRTD,抬头显示销售组织字段 | 转换失败,计划员无法干预排程 |
| 3 | 生产订单含销售组织信息 | CO03 查看新订单 → “附加数据”标签页 | Sales Org、Dist. Channel、Division三字段均有值 | 成本无法按客户维度分析 |
| 4 | 工单下达后可发料 | CO02 下达订单 → 进入 MB1A 发料 | 可选择该工单,组件库存充足,发料成功 | 车间停工待料,交付延期 |
| 5 | 报工后自动更新订单状态 | CO11N 报工 → 输入工时与产量 | 订单状态变为REL(已下达)+PCNF(部分确认),MD04 中需求状态变灰 | 进度不可视,计划失控 |
| 6 | 发货后成本自动结算 | VL02N 发货 → 执行 CO88 结算 | CO88 显示“结算成功”,KE30 中该销售订单行项目有成本金额 | 财务月底关账卡壳,毛利失真 |
这张表我贴在工位显示器边框上,每次配置完必打钩。最常翻车的是第 3 条和第 6 条——前者因出口未激活,后者因结算规则未分配。记住:MTO 的验收不是“能跑通”,而是“每个环节的数据都精准落位”。少一个钩,上线后就是连续三天的救火。
6. MTO 的最后一道防线:用事务码 COOIS 做实时订单追踪与瓶颈预警
配置做完、验收通过,不等于万事大吉。MTO 的真实战场在日常运营:某个客户订单突然加急,如何快速定位它卡在哪道工序?某台设备连续三天超负荷,哪些订单在排队?这些不是靠报表,而是靠COOIS(生产订单信息系统)这个黑匣子级工具实时透视。
6.1 COOIS 的核心用法:三步定位任意订单的全生命周期
COOIS 不是报表,是动态查询引擎。它的威力在于“以订单为锚点,逆向穿透所有关联节点”。操作极简:
输入筛选条件:
- 订单号(可模糊,如
100000*) - 工厂(必填)
- 订单状态(建议勾选
CRTD,REL,PCNF,TECO全部) - 勾选“显示组件”与“显示工序”
- 订单号(可模糊,如
执行后看三张关键表:
- 订单抬头表:显示订单号、销售订单、计划交期、实际开工/完工时间;
- 工序明细表:列出每道工序的计划开始/结束、实际开始/结束、确认数量、剩余数量;
- 组件发放表:显示每种原材料的预留数量、已发数量、未发数量、发料日期。
点击任意工序行 → 按 F2 → 查看“产能需求”:
系统立刻弹出该工序在各工作中心的小时级负荷图,红色区块即为超负荷时段。例如:工序0010在工作中心WC-ASSEMBLY的 5 月 10 日 14:00–16:00 显示红色,说明该时段已排满,后续订单必须顺延。
6.2 预警技巧:用“自定义布局”固化高频监控视图
COOIS 默认布局信息过载。我习惯保存两个自定义布局:
- 加急订单视图:只显示
订单号、销售订单、计划交期、实际完工、工序状态、剩余数量,排序按计划交期升序,一眼揪出临界订单; - 瓶颈中心视图:筛选工作中心
WC-ASSEMBLY,显示工序、计划开始、计划结束、已确认、剩余,并开启“按天分组”,每天看哪几道工序积压最多。
保存方法:布局调整好后 → 点击工具栏“保存布局”图标 → 输入描述(如URGENT_VIEW)→ 勾选“全局布局” → 保存。下次打开 COOIS,下拉菜单直接选,3 秒进入战斗状态。
6.3 血泪教训:别信“系统自动排程”,MTO 的排程权必须握在计划员手里
最后这点,是我带过所有模拟项目 X 后最想塞进新人脑子里的后悔药:SAP 的 PP 模块没有真正的“智能排程”,所谓“自动排程”只是基于固定参数的线性计算,它不考虑设备突发故障、人员临时请假、模具更换耗时、首件检验等待等真实变量。我见过太多团队把 MTO 当成“配完就自动运转的流水线”,结果上线一周,车间抱怨“系统排的日期根本做不到”,计划员天天手动拖拽工序。
我的做法很土,但管用:
- 关闭所有自动排程作业(事务码 OPJH 中停用
PP_SCHEDULING后台作业); - 要求所有计划订单必须经 CO41 手动确认,确认时强制填写“计划开工日”与“计划完工日”;
- 每日晨会用 COOIS 导出
瓶颈中心视图,计划员拿着打印件到车间,跟班组长当面敲定当天优先级。
技术是骨架,人是神经。MTO 的价值,从来不在系统多快,而在计划员多敢担责。希望帮到你。
本文还有配套的精品资源,点击获取