
简介这份文档面向SAP顾问、制造企业IT人员及供应链学习者系统讲解MTO按订单生产业务从物料主数据到销售开票的完整流程帮助读者理解定制化制造场景下的系统配置与操作逻辑。资源包内含1个docx文件约1.21MB以图文操作手册形式呈现目录涵盖物料主数据设置、销售订单创建、MRP运行与结果查看、专用料采购、MTO生产操作、库存转移、产品销售发货及销售开票等模块并标注了MM01、VA01、MD41、ME57、ZMIGO等关键事务码。其中成品策略组设为20、专用料与公用料在MRP4中的区别设置、采购申请转采购订单及SO间库存转移等细节均有展开便于对照系统逐步操作。目前已有5777人学习下载适合需要掌握MTO端到端流程、查漏补缺的初中级SAP用户参考。1. SAP MTO 业务到底在解决什么问题从一张销售订单说起很多做 SAP MM 或 PP 的同行第一次接触 MTO 是在项目上被问“这个料是走库存还是走订单”当时脑子里只有 501、101、261 这些事务码对 MTO 和 MTS 的区别说不出所以然。SAP MTOMake To Order按订单生产的核心逻辑其实一句话能说清物料不提前备库存等销售订单来了才触发采购、生产、发货整条供应链由销售订单号串起来。它解决的是定制化、小批量、高价值场景下的库存积压和错发问题——比如非标设备、专用配件、客户指定配置的产品。适合谁适合那些“客户不下单就不敢备料、备了料又怕客户改需求”的制造和贸易企业。后面我会把 MTO 从销售订单到生产订单、从 MRP 到发货的完整链路拆开配上可复现的配置和踩坑记录。2. MTO 的底层逻辑销售订单怎么变成生产订单2.1 销售订单行项目类别决定 MTO 走向MTO 不是靠一个开关打开的它藏在销售订单的行项目类别Item Category里。标准系统里TAN是标准物料按库存销售TAK是按订单生产Make-to-Order的典型类别。当你创建销售订单时如果物料主数据里“项目类别组”设成了NORM系统默认带出TAN如果设成0002或类似 MTO 专用的项目类别组就会带出TAK或TAB。这一步决定了后续 MRP 是跑净需求还是跑单个销售订单需求。我一般会先检查三个地方物料主数据销售视图的“项目类别组”、销售订单类型的“项目类别确定”配置、以及行项目类别本身的“需求类型”。需求类型里有个关键字段叫“需求类别”MTO 通常对应KE或KEL它告诉 MRP这个需求是绑在销售订单行上的不能和其他订单合并。提示如果销售订单行项目类别带出的是TAN后面 MRP 跑出来就是库存需求不会生成带销售订单号的生产订单。这是最常见的“为什么我的 MTO 没生效”的原因。2.2 需求类型与 MRP 的联动关系需求类型Requirement Type是 MTO 的神经中枢。事务码OVZH可以查到需求类型的配置。MTO 常用的需求类型比如KE它的“需求类别”是KE勾选了“单个需求”标识。这个标识意味着MRP 运行时系统不会把多个销售订单的相同物料合并成一个采购申请或生产订单而是每个销售订单行单独生成一个计划订单计划订单里会带上销售订单号和行项目号。具体操作上你可以用MD50对单个销售订单跑 MRP也可以用MD01跑全厂 MRP。跑完后用MD04查看物料需求你会看到需求行上带着销售订单号供应行计划订单也带着同样的销售订单号。这就是 MTO 和 MTS 在 MD04 里最直观的区别。# 用 MD50 对销售订单跑 MRP 的典型输入 事务码MD50 输入 物料你的成品物料号 工厂1000 销售订单0000012345 行项目000010 处理代码NETCH净变更 执行后系统生成计划订单计划订单号可在 MD04 中查看上面这段不是代码是事务码操作路径。逻辑说明MD50是专门针对销售订单行跑 MRP 的事务码它只考虑这一行的需求不会把其他订单的需求拉进来。参数说明处理代码NETCH表示净变更运行只跑有变化的物料如果选NEUPL就是全量重跑生产环境慎用容易把手工调整的计划订单冲掉。2.3 计划订单到生产订单的转换计划订单生成后下一步是转成生产订单。事务码MD04里选中计划订单点“转换”按钮或者用CO41批量转换。转换时系统会带出物料、数量、日期、销售订单号。生产订单创建后销售订单号会写在生产订单的“销售订单”字段里形成追溯链。这里有个参数容易翻车计划订单里的“生产版本”和“BOM 展开日期”。如果物料有多个生产版本转换时系统可能选错版本导致组件不对。我一般会在物料主数据 MRP4 视图里固定一个生产版本或者在计划订单里手工指定。另外BOM 展开日期默认是生产订单的基本开始日期如果这个日期早于 BOM 的有效期起始日组件会展开不全。# CO41 批量转换计划订单 事务码CO41 输入 工厂1000 物料你的成品物料号 销售订单0000012345 选择“转换计划订单”按钮 系统生成生产订单并自动带出销售订单号逻辑说明CO41是批量转换工具适合一次转换多个计划订单。参数说明转换前务必检查“调度”选项如果勾了“自动调度”系统会重算生产日期可能把日期推到销售订单交货期之后。我一般先不勾自动调度转完再手工调整。3. MTO 的采购与库存特殊处理别把订单库存当普通库存3.1 采购申请里的销售订单号从哪来MTO 成品下面的组件如果是采购件MRP 跑出来的采购申请也会带上销售订单号。这个销售订单号来自需求追溯成品计划订单的需求类型是KE它把销售订单号传给了下阶组件。采购申请上的“销售订单”字段可以在ME53N里看到。采购订单创建后这个字段继续传递收货时库存会进入“销售订单库存”而不是普通库存。销售订单库存的事务码是MD04里看到的“特殊库存 E”或者用MB52查看时选“销售订单库存”。这种库存的特点是只能用于这个销售订单不能挪给其他订单。如果销售订单取消库存就变成呆滞需要走特殊流程处理。注意销售订单库存的收货必须用MIGO并选择“销售订单库存”标签如果误用普通收货库存会进到非限制库存后续发货时系统会找不到这个订单的库存导致发货卡住。3.2 销售订单库存的发货与发票发货用VL01N创建交货单系统会自动带出销售订单库存。如果库存不足交货单会报错“库存不足”。发票用VF01创建和普通销售流程一样。但这里有个坑如果销售订单库存被误转到普通库存交货单创建时系统会提示“没有可用的销售订单库存”这时候要用MB1B做转移过账把普通库存转回销售订单库存移动类型用412或413系列。# 销售订单库存误转普通库存后的补救 事务码MB1B 移动类型412普通库存转销售订单库存 输入 物料你的物料号 数量需要转回的数量 销售订单0000012345 行项目000010 过账后库存回到销售订单库存逻辑说明412是普通库存转销售订单库存的标准移动类型413是反向。参数说明销售订单和行项目必须填对否则库存会挂到错误的订单上。过账前用MB52确认当前普通库存数量避免转多。3.3 多阶 MTO 的库存归属问题如果 MTO 成品下面有半成品半成品也是按订单生产那么半成品的计划订单也会带销售订单号。收货时半成品进入销售订单库存生产订单领用时从销售订单库存领。这里容易出现“库存归属混乱”半成品入库时没带销售订单号导致成品生产订单领不到料。我一般会在半成品的物料主数据里也设置 MTO 相关的项目类别组和需求类型确保 MRP 跑出来就带订单号。4. MTO 避坑与排查那些年我踩过的销售订单库存坑4.1 坑一MD04 里看不到销售订单需求现象销售订单创建了物料也设置了 MTO但MD04里只看到库存看不到销售订单需求。原因销售订单行项目类别不是TAK或者需求类型没配成KE或者 MRP 没跑。解决先查销售订单行项目类别VA03里看行项目“项目类别”再查物料主数据销售视图的“项目类别组”最后用MD50对销售订单行单独跑 MRP。如果还不行检查需求类型的“需求类别”是否勾了“单个需求”。4.2 坑二生产订单收货后库存没进销售订单库存现象生产订单收货了但MB52里普通库存多了销售订单库存没变。原因生产订单的“销售订单”字段为空或者收货时移动类型用错。解决用CO03查看生产订单的“销售订单”字段如果为空说明计划订单转换时没带过来。检查计划订单的需求类型和销售订单号。如果字段有值但收货还是进普通库存检查移动类型配置OMJJMTO 收货应该用101但库存类别是E。4.3 坑三销售订单库存被其他订单领用现象A 订单的库存被 B 订单的生产订单领走了。原因生产订单领料时没指定销售订单号或者库存转移时挂错订单。解决生产订单领料用MIGO时移动类型261的“特殊库存”字段要选E并输入正确的销售订单号。如果已经领错用MB1B移动类型262退料再重新领料。4.4 坑四销售订单取消后库存变呆滞现象销售订单取消但销售订单库存还在无法用于其他订单。原因MTO 库存天生绑定订单订单取消后库存不会自动释放。解决用MB1B移动类型412把销售订单库存转成普通库存或者用MB1B移动类型551报废。如果金额大走MR22调整物料价值。4.5 坑五MD04 里销售订单需求日期和交货期不一致现象销售订单交货期是 10 号但MD04里需求日期是 15 号。原因需求日期来自销售订单的“计划行”日期不是“交货日期”。计划行日期受物料可用性检查和运输提前期影响。解决用VA03查看销售订单的计划行确认“确认交货日期”。如果计划行日期不对检查销售订单类型的“计划行类别”配置和物料的“运输提前期”。5. MTO 进阶用 MD07 和序列号状态做订单追溯5.1 MD07 在 MTO 里的用法MD07是物料需求汇总报表MTO 场景下我常用它来快速查看某个销售订单号下所有物料的需求和供应。输入销售订单号系统会列出所有相关物料的需求行、计划订单、生产订单、采购申请。这个报表比MD04更适合批量查看尤其是多阶 MTO 的时候。# MD07 按销售订单号查看需求 事务码MD07 输入 销售订单0000012345 工厂1000 选择“执行” 系统列出该销售订单下所有物料的需求和供应逻辑说明MD07的筛选条件里可以输入销售订单号它会自动过滤出绑在这个订单上的所有需求。参数说明如果只想看异常可以勾“例外消息”比如01新需求、02日期提前等。5.2 序列号状态与 MTO 的追溯MTO 产品如果启用了序列号管理序列号状态可以反映生产进度。事务码IQ02可以查看序列号当前状态比如EDEL已删除、I0001在库、E0001已发货。MTO 场景下序列号从生产订单收货时生成发货时状态变为E0001。如果序列号状态不对比如收货后还是I0001但库存已经发了说明状态更新逻辑有问题需要检查序列号配置OIS2和移动类型的序列号参数。序列号状态含义MTO 场景下的典型节点I0001在库生产订单收货后E0001已发货交货单过账后EDEL已删除销售订单取消后手工删除5.3 一个具体技巧用销售订单号反查生产订单有时候只拿到销售订单号想知道生产订单号除了MD04还可以用VA03进入销售订单点“环境”-“显示生产订单”或者用CO03输入销售订单号查询。更直接的是用SE16N查表AUFK字段KDAUF销售订单号和KDPOS行项目号就能找到对应的生产订单号。-- SE16N 查 AUFK 表 表名AUFK 字段KDAUF 0000012345 KDPOS 000010 输出AUFNR生产订单号逻辑说明AUFK是订单主数据表KDAUF和KDPOS分别存销售订单号和行项目号。参数说明KDPOS是 6 位销售订单行项目号通常是 6 位不足补零。查之前确认销售订单号是 10 位不足补零。我做了这么多年 MTO最大的教训是别等到发货才发现库存挂错订单。每次跑完 MRP花五分钟用MD07按销售订单号扫一遍比事后用MB1B转库存省事得多。希望帮到你。本文还有配套的精品资源点击获取