
简介一份关于SAP MTOMake-to-Order业务详解的原创文档面向SAP实施顾问、生产计划员及物料管理人员系统梳理按单生产模式下从订单到交付的完整流程。内容以操作手册形式组织覆盖物料主数据设置区分专用料与公用料、销售订单创建、MRP运行与结果查看、专用料采购收货、MTO生产订单创建发料与收货、库存转移以及销售发货与开票等环节同时给出MM01、VA01、MD41、ME57等关键事务码便于对照系统实操。压缩包内包含1个docx文档约1.21MB目录按业务阶段分章节编排既可作企业实施MTO策略的培训教材也可作日常运维的案头参考。目前已有5795人学习下载对正在配置或优化MTO流程的团队颇具实用价值。1. MTO 业务的起点策略组 20 背后是“库存跟着订单走”MTOMake to Order在 SAP 里不是一个按钮而是一整套让库存“围着销售订单转”的机制。核心就一句话物料从采购、生产到发货全程挂在某个销售订单行项目上库存类型是销售订单特殊库存E 库存普通库存查询里根本看不到它。触发这一切的开关就是成品的 MRP3 视图里把 Strategy group 设为 20系统从此把每个销售订单的需求当成独立对象来计划、采购和生产。这套模式最适合定制化程度高、需求波动大的行业——机械制造、电子设备、专用仪器都在用。我拆过不少 MTO 业务的手册和配置也见过各种“订单做完找不到库存”的翻车现场这篇就把从物料主数据到开票的全流程操作拆开讲重点标出走完每一步要注意的边界和坑。2. 物料主数据配置MRP3 和 MRP4 视图决定库存性质2.1 成品设置MRP3 视图的 Strategy group 20MTO 业务里成品是“被订单牵着走”的那个角色。用 MM01 创建、MM02 修改进入后重点看 MRP3 视图把 Strategy group 维护为 20Make-to-order production。这个字段是整个 MTO 流程的总开关它告诉 MRP这个物料的需求来源是销售订单而不是独立需求如计划独立需求 PIR。对成品来说除了策略组还要留意 MRP 类型、批量程序和计划日历这些基础字段。MRP 类型建议用 PDMRP 自动计划这样 MD41 跑 MRP 时才会正常生成计划订单和生产建议。批量程序用 EX 或 MAX 这类按销售订单数量直接传的不要用按月汇总的批量否则一个销售订单会被拆出多张生产订单反而增加操作量。MM02 成品编码 视图选择基本数据 / MRP1 / MRP2 / MRP3 / MRP4 / 工厂数据 MRP3 页签 → Strategy Group 20 保存参数说明Strategy Group 20 只是策略组编号真正起作用的是它背后的需求类型和消耗标识。配置里需求类是 020消耗模式默认按销售订单消耗MRP 会把销售订单需求直接传递为生产订单的源需求。如果工厂里成品还同时跑预测MTS就不要用 20要用 82 或 82 变式否则预测和订单需求会打架。2.2 半成品和原料的专用料/公用料MRP4 视图的 Individual/Coll.半成品和原料的设置比成品细它们要回答一个问题这个物料是只为一个销售订单服务还是多个订单共用答案写在 MRP4 视图的 Individual/Coll. 字段里。Individual requirements only 对应值 1也就是专用料只针对单张销售订单采购或生产库存挂在 SO 头上别的订单不能动它。Collective requirements only 对应值 2也就是公用料多个销售订单可以共享MRP 会把所有订单需求汇总后统一采购或生产。MM02 半成品/原料编码 视图选择MRP4 Individual/Coll. 1专用料或 2公用料 保存一个小经验改 MRP4 里这个字段时如果物料已经有库存或历史业务记录系统不会直接封锁修改但重新跑 MRP 后需求汇总方式会变。所以改完后必须重新运行 MRP把旧计划订单删掉重生成否则计划订单还是按老逻辑走的。2.3 配置完成后如何复核配置完三个物料后我一般会做一次目视确认MM03 进去逐个翻 MRP3/MRP4确认成品是 20、专用料是 1、公用料是 2。不要嫌这一步多余实际项目里最容易出错的就是专用料配成公用料结果客户订单的专用件被别的订单“借用”库存对不上。再补一个检查方向物料类型。MTO 业务里成品类型用半成品HALB或成品FERT都可以区别在于是否走生产订单原料ROH一般只走采购。确定物料类型后再回来看 MRP 视图避免出现“原料类型 策略组 20”这种组合——系统允许但业务上很别扭因为原料根本不需要按订单生产。3. 销售订单与 MRP 运行从 VA01 到 MD04 的需求全追溯3.1 VA01 创建销售订单需要注意的字段MTO 流程的起点是 VA01 创建销售订单。销售订单里要维护客户、物料、数量、交货日期、工厂和销售组织范围。这里有个容易被忽略的点订单行项目的“类别”和“科目分配类别”在 MTO 里经常需要确认一下对专用料采购尤其重要——ME57 转采购订单时采购申请必须带科目分配类别 E销售订单库存这个 E 就来自销售订单行项目的科目分配传播。实际操作时VA01 输入完抬头和行项目后直接保存系统生成销售订单号。如果客户主数据里没有定价或送达方信息保存时会报错所以创建前先在 XD01/XD02 里把销售视图维护完整。销售订单保存后物料的需求会以“客户需求”的形式出现在 MD04 里类型是 KSV销售订单库存需求这是后续 MRP 运算的源头。3.2 MD41 跑 MRP 后看什么事务码 MD41 按物料、工厂跑 MRP也可以带调度参数跑一整个物料组的批量 MRP。生产环境里这个事务码通常是有权限控制的因为手动全工厂跑 MRP 会锁表影响前台操作。日常做法是白天业务人员在 MD04 里逐物料看结果夜间作业自动跑 MD41生成计划订单和采购申请。MD41 物料编码 工厂 处理代码NETCH总改变计划或 NETPL计划改变 创建采购申请 2未清采购申请或 3立即生成 运行参数说明MD41 界面的“创建采购申请”字段要特别注意MTO 专用料的采购申请从这里就带上了销售订单号和行号。如果你把参数设为 1不生成那 MRP 只产生计划订单ME57 里看不到可转的采购申请采购员会以为没需求。常见做法是设为 2 或 3让系统直接生成采购申请后采购员在 ME57 里统一处理。跑完后 MD04 查看需求清单重点确认三件事成品行显示的是客户需求KSV和计划订单Planned order专用料需求行对应准确的销售订单号和行号公用料需求行显示为汇总需求多个订单并在一起3.3 MD04 里需求类型怎么读MD04 是一张“所有需求来源”的表从上到下按日期排序销售订单需求、计划订单、采购申请、生产订单、库存、收货、发货。MTO 场景下专用料需求行会直接显示订单号/行号这是判断“这个物料是不是专用料”最直观的方式。有次做项目用户说“MD04 里看不到专用料采购申请”我让他先把屏幕右下角的“单个/汇总”切换按钮点开确认是“单个需求”视图而不是“汇总需求”视图。这个按钮在 MD04 工具栏上图形上是一个“1/多”切换图标很多用户不知道它存在。切换后专用料需求就会按销售订单分开显示问题当场解决。4. 采购与生产闭环ME57 转单与 MIGO 收发料的账实一致4.1 ME57把专用料采购申请转成采购订单MRP 跑完后专用料的采购申请会挂在对应销售订单下。事务码 ME57 是批量处理采购申请的入口也可以直接在 MD04 里双击采购申请行按“采购订单”按钮转单但生产环境里采购员更习惯用 ME57 集中处理。ME57 选择采购申请 工厂 物料 或直接按 MRP 控制器 执行 → 列出所有未清的采购申请 选中行项目 → Assign automatically自动分配信息记录 双击行项目 → Process Assignment → Continue 输入采购订单数量、价格、交货日期 科目分配类别 E销售订单 检查 → 保存这里的逻辑Assign automatically 是让系统按信息记录自动带出供应商和价格。如果物料没有信息记录系统会提示“no info record”这时只能手工输入供应商、价格之后需要补采购信息记录。科目分配类别 E 千万别漏没有 E 的话采购订单就变成普通库存采购收货后库存进无限制库存完全脱离销售订单这在 MTO 里是重大失误。4.2 专用料采购收货用 ZMIGO 做“过账”而不是“收料”采购订单收货用 MIGO物料移动类型是 101。这里有个特殊点MTO 专用料采购订单收货时移动类型虽然是 101但库存类型是销售订单库存E收货时物料凭证里会自动带出销售订单号和行号。很多老手直接点 Post系统后台自动校验该采购订单对应的 SO不需要手动指定。MTO 场景下更稳妥的做法是给收货做一个专用事务码变式比如 ZMIGO预先设置好移动类型 101、收货的默认值、屏幕布局减少用户手工改动字段出错的可能。这个 ZMIGO 在项目里很常见属于 MM 顾问的标准做法——不是必须但对操作员极其友好尤其是工厂里不是所有操作员都懂库存类型。ZMIGO或 MIGO 采购订单号 → 执行 默认收货数量确认销售订单号自动带出 单击 过账收货完成后物料库存出现在 MB52 里显示为“销售订单库存”每一行对应一个销售订单号。注意这种库存不是自由库存不能用普通 201 发料直接发给生产订单必须带着 SO 维度做后续操作。我用 MB52 检查库存时习惯勾选“特殊库存”列否则系统默认只显示普通库存MTO 库存会被当成无需求库存忽略掉这是很多用户说“库存少了”的原因。4.3 生产订单MD04 转换、发料、收货的全过程MTO 的生产订单最好从 MD04 里直接转换不要用 CO01 手工建因为 MD04 转换会自动把销售订单号带入生产订单并建立需求关联。操作路径MD04 查看成品需求行选中计划订单点“Prod.Ord.”按钮系统弹出生产订单创建界面确认数量、日期点 Release下达 Save这步完成之后生产订单状态是 REL已下达MRP 需求源也由计划订单变为生产订单。如果忘记 Release后续 MIGO 发料时会报“订单未下达无法发料”。MD04 → 选中计划订单 → 生产订单按钮 生产订单类型YBM / YBZ 或工厂自定义类型 释放 → 保存 刷新 MD04需求行已变为生产订单/预定生产订单发料用 MIGO移动类型 261。专用料从销售订单库存发给生产订单时系统会要求输入批次号或特殊库存标识这个批次必须对应销售订单和行号否则报错。这里的批次不是随便选的它在物料主数据的批次管理中启用而且 MTO 专用料批次通常在采购收货时按 SO 维度自动生成。MIGO → 发货 → 生产订单 输入生产订单号 → 回车 输入批次对应销售订单行号 检查 → 过账生产订单收货也用 MIGO移动类型 101参照生产订单。收货时系统默认带出销售订单号行号点击保存即可。MTO 的生产订单收货有个特征收货后成品进销售订单库存E 库存不用再按普通成品入库再发货直接等 VL01N 做交货单。4.4 MTO 生产操作的数据一致性检查生产环节最容易出的问题是“账实不一致”MB52 里成品已经入库但销售订单行里库存还是空的——多半是收货时销售订单号没带出来生产发料时批次报错——批次混淆或批次不是为该 SO 建立的生产订单下达后 MD04 看不到——订单没保存或状态是 CRTD这些问题的排查思路高度统一MIGO 操作后马上查物料凭证MB03凭证里销售订单号和行号有没有再查 MB52 特殊库存有没有对应行。如果凭证带不出 SO 号别急着调库存先查生产订单头的“销售订单号”字段有没有维护没有就在 CO02 补上再重新收货。5. 库存转移、发货与开票309/412、VL01N、VF01 的连贯操作5.1 309销售订单之间的库存转移MTO 业务里有时需要把库存从 SO A 转到 SO B。常见场景是客户 A 取消订单库存转给客户 B或客户 A、B 的订单内容相同为了平衡发货可以先做转移。SAP 用移动类型 309 做销售订单库存到销售订单库存的转移事务码 MIGO。MIGO → A08 Transfer Posting Reference Document Others Movement Type 309 E 从 SO 行号 → 目标 SO 行号 过账“309 E”这里的 E 是特殊库存标识表示转的是销售订单库存。如果漏了 E系统会认为你在转普通库存找不到源库存直接报错。另外操作界面里转入库存的销售订单号、行号、批次都要手工维护这是 MTO 场景里最考验细心的地方——所有条目都是“哪个订单的货物给哪个订单”。5.2 412非 SO 库存转移到 SO 库存412 移动类型用于把非销售订单库存普通库存转为销售订单库存。操作方法和 309 类似MIGO 里选 A08 Transfer Posting、Others、412 E。这个操作在 MTO 里的典型用法是项目备料多买了、或者供应商送多了普通库存里有多余物料正好某个销售订单缺料就可以把普通库存“绑”到销售订单上。MIGO → A08 Transfer Posting Reference Document Others Movement Type 412 E 输入物料、批次、目标销售订单/行号 过账注意412 移入的销售订单必须有效而且物料批次如果在源库存里没有启用批次系统会自动判断。实际项目里412 操作容易遇到批次校验失败因为转出的库存是普通库存、批次可能是通用批次转入的 SO 库存要求批次对应 SO——这时需要在物料主数据里把批次改成“SO 特定批次”或者重新建立新批次。这个坑在 MTO 项目上线初期几乎必现。5.3 VL01N 发货过账与批次匹配校验MTO 销售发货和普通发货的差异体现在交货单上VL01N 按销售订单创建交货单系统自动把销售订单库存作为货源发货过账时校验批次是否与销售订单匹配。如果批次不匹配系统报“物料 XXX 对于销售订单 YYY 不可用”这是 MTO 发货最常见的报错。VL01N 输入销售订单号 → 创建交货单 检查交货数量、批次 担保存 → 过账发货过账后交货单状态变为“已发货”系统自动产生物料凭证销售订单库存减少。之后 VF01 开具发票输入交货单号或销售订单号系统带出数量和金额保存即完成开票。MTO 到 VF01 开票这一步流程就走完了。但整个流程里有一个贯穿始终的动作随时到 MB52 里看“销售订单库存”。从采购到生产到发货每一步的余额变化都能在 MB52 里追溯到 SO 维度。我看项目时经常让用户按月打印一张 MB52 特殊库存报表核对每个 SO 的库存齐套情况这是 MTO 手工检查最有效的手段。6. 避坑排查与流程验证批次、配置、状态与记账的完整复盘6.1 批次不匹配MIGO 发货一直报错现象MIGO 或 VL01N 过账时提示“批次在销售订单中不存在”或“批次与销售订单不匹配”。原因MTO 专用料采购收货时建立的批次是跟销售订单号绑定的系统里批次的“销售订单”字段有值。发货时手工输入的批次如果不是该 SO 对应的批次校验直接失败。解决先在 MB51/MB03 里查原收货物料凭证确认该 SO 对应的批次号再到 MIGO 发货界面按那个批次号输入。如果找不到可用批次检查物料主数据是否启用批次管理、收货时是否自动生成批次必要时用 MSC2N 调整批次主数据实际上线时这个操作要谨慎一般建议重新收退货再收一次。6.2 专用料误配成公用料MRP 结果出现汇总需求现象MD04 里查询某个“专用料”结果需求行没有销售订单号而是多条订单杂在一起ME57 转出的采购申请也无法直接对应 SO。原因MM02 里 MRP4 的 Individual/Coll. 字段设成了 2CollectiveMRP 按汇总需求处理。解决改回 1Individual删除旧计划订单和采购申请重新跑 MD41。这里有个注意点改配置前如果有未清采购订单建议先看采购订单类型因为已经转成采购订单的需求不会因为重新跑 MRP 自动取消需要手工将采购订单删掉或关联正确的 SO。6.3 生产订单下达后 MD04 需求源没变现象MD04 转换生产订单后点 Release界面显示已下达但刷新 MD04 需求源还是计划订单。原因最常见的是 Release 后没有保存或者在 CO02 里生产订单只是保存了但没有做下达动作。还有一个隐蔽原因生产订单类型没有做“自动下达”的增强系统未生成下达参数文件。解决CO02 打开生产订单确认状态栏里至少是 REL已下达保存。如果批量下达可以用 COHV 按订单号做批量 Release但需要确认订单已保存。检查订单状态用 CO03看系统状态是 CRTD 还是 REL一目了然。6.4 库存转移后总库存没变但 SO 库存不对现象执行 309 或 412 后MB52 显示总体库存不变但某个 SO 库存多了另一个 SO 库存少了或普通库存凭空少了一块。原因这其实是正常现象309/412 本来就是“库存类型之间转移”总库存在工厂层面不变。用户误以为“库存没变操作没生效”实际是没看特殊库存视图。解决MB52 勾选“特殊库存”按销售订单显示。也可以 MB51 查该物料的物料凭证凭证里字段“特殊库存”会显示 E说明转移已经记账。6.5 采购申请转采购订单后找不到凭证现象ME57 执行 Assign automatically 后双击行项目找不到转单入口甚至采购申请消失。原因一是采购申请已被其他人处理二是执行转单后没保存三是信息记录未维护导致自动分配中断。解决ME57 里点“已处理”行项目查看历史确认采购订单号如果中途中断回 MD04 找到原采购申请确认状态是“已分配”还是“未处理”。建议整个 ME57 操作一气呵成自动分配好之后直接双击转采购订单不要中途切屏幕SAP 这种长事务一断就容易出现数据不一致。流程验证方面我自己的习惯是每个订单走完一个完整闭环后拿 MB03 打一张从采购收货到发运的凭证清单核对销售订单号始终一致。专门为 MTO 流程做过一个小检查表主数据策略组 20、MRP4、批次、订单VA01 订单号、MRPMD04 需求类型、采购ME57 的 E 分配、生产CO03 状态 REL、发货VL01N 过账、开票VF01 保存每步打勾确认凭证号连贯。现在每做一个 MTO 配置或支持需求我都强制自己先按这个清单把所有字段过一遍再做操作看起来慢实际上省掉了后期对账和库存调整的时间——库存错了找原因的过程远比这个过程痛苦得多。希望这篇 MTO 业务详解的操作思路能帮到你哪怕只是一次避开了批次或科目分配的坑也算没白写。本文还有配套的精品资源点击获取