简介一份SAP MTO业务全流程操作手册面向生产制造模块顾问、计划员与关键用户系统讲解按订单生产Make-to-Order策略下从销售订单到生产执行、库存转移及销售开票的完整链路。内容依次覆盖物料主数据中成品、专用料与公用料的策略组设置销售订单创建运行物料需求计划并查看结果专用料的采购申请转采购订单、收货与库存查询生产订单的创建、发料与收货销售订单之间及非销售订单至销售订单的库存转移以及产品销售发货与开票环节。每个步骤均配有常用事务码和实际界面截图便于在ECC或S/4环境对照演练。资源包仅含一个Word文档大小约一点二一MB目录清晰、层级完整既适合初学者建立从需求到交付的整体认知也可供实施与支持人员日常配置和排错时查阅。目前已有五千七百八十五人学习或下载是一份兼顾完整性与操作性的MTO业务参考资料。1. SAP MTO 业务详解按单生产为什么总是差一步“把物料主数据里的策略组改成 20销售订单一挂上去系统就能按单生产”——我见过太多项目在这个认知上翻车。某做定制设备的客户顾问改完策略组就宣布上线第一个月结时未分配差异挂了八十多万财务拿着报表找不到下单人。SAP MTO 业务详解真正要解决的问题是把“按单生产”从三个维度一起打通销售订单驱动需求、特殊库存 E 隔离库存、成本结算归集到订单行。这三件事分别属于 PP、SD、CO 的配置范围各自独立又互相咬合任何一个环节断了订单成本就会从系统里“漏”出去。这篇文章写给正在实施或运维 MTO 的 PP/CO 顾问、内部顾问、计划员和月结会计按“为什么要做、怎么配、怎么走流程、坑在哪”的顺序展开照着理一遍能少走不少弯路。2. MTO 的底层逻辑库存归谁、需求从哪来、MRP 怎么跑先别急着进后台配参数。MTO 在 SAP 里不是一个开关而是需求管理、库存归属、生产计划、成本核算四件事的联动。很多项目翻车就是因为只改了需求策略没想清楚库存和成本对象也跟着变了。这一章先把边界划清楚后面配置才会有依据。2.1 MTO 与 MTS 的分界库存归谁需求从哪来判断一个物料适不适合用 MTO最直接的问题只有一个这个成品的库存能不能被别的销售订单“借”走。在 MTS按库存生产模式下成品入到非限制库存属于工厂公共的可用库存。销售订单来了从非限制库存里发货扣减库存不够时再触发补货。生产计划和销售订单之间没有强绑定关系财务核算也可以按标准成本归集到物料或生产订单。MTO 则相反。成品的收货进入特殊库存 E也就是销售订单库存这个库存属于具体的销售订单行项目。同一颗物料可以同时被十个销售订单分别持有彼此之间不能串用。发货过账时也只会从对应的 E 库存里扣减。也就是说MTO 下的库存天然就是“专料专用”的任何挪用都会被系统挡住。对比项MTS 按库存生产MTO 按单生产需求来源计划独立需求预测销售订单的客户需求成品库存归属非限制库存销售订单库存特殊库存 E生产触发MRP 按预测跑计划订单销售订单确认后由客户需求驱动库存能否被其他订单挪用能不能成本归集对象生产订单 → 物料分类账/总账生产订单 → 销售订单成本对象 → COPA适用场景标准品、备货型客户定制、按单核算、不允许积压如果业务上允许 A 订单卖不掉时把货发给 B 订单那本质上还是 MTS只是换了个名字叫“按单生产”。搞清这个分界才能决定后面用策略组 20 还是 25也才能解释为什么要在 MTO 里引入特殊库存 E。2.2 策略组 20 与策略组 25纯按单和带预测的按单确定了要用 MTO下一步是选需求策略也就是物料主数据 MRP4 视图里的“策略组”字段。SAP 标准里最常用的是策略组 20纯按单生产次常用的是策略组 25按单装配。策略组 20 的逻辑最干净系统不跑独立需求销售订单创建后在 MD04 里产生“客户需求”MRP 运行时只针对这个客户需求生成计划订单。计划订单转生产订单后产生组件层面的相关需求。整个过程里最终成品不允许有预测量。适合客户完全定制、接了单才安排生产、且成品不备货的业务。策略组 25 则是 MTO 的一个变体SAP 官方叫 Make-to-Order with planning material适合可配置物料或半成品共通性高的场景。它允许在计划物料上跑独立需求做预测销售订单进来后相关需求会去冲销消耗预测量再按剩余需求安排生产。对计划员来说如果销售订单没来但想先备半成品或共用料策略 25 比 20 更贴近实际。选型建议销售订单来了才排产、客户插图定制多选 20产品有配置变式、需要用计划物料汇总需求、又必须按单核算成本选 25。另外有些项目把“按单生产 成品安全库存”混在一起做结果仓库里既有 E 库存又有非限制库存计划员每天解释不清。安全库存可以设但设了安全库存后需求来源就比纯 MTO 多了一条路MD04 不会像原来那么好读。2.3 需求传递链路与 ATPMD04 里多了谁MTO 模式下 MD04 的读法和 MTS 完全不同。MTS 里最多看到独立需求、计划订单、生产订单、相关需求这几类 MRP 元素MTO 里第一条永远多出一个“客户需求Cust.req.”以及对应的特殊库存 E 行。需求传递的完整链路是这样的销售订单行项目确认后系统在 MD04 里生成客户需求MRP 运行后客户需求驱动生成计划订单计划订单转换为生产订单后生产订单抬头会带着销售订单号和行项目号同时组件需求变成相关需求报工收货后成品进入销售订单库存 E发货过账时从 E 库存扣减销售订单库存归零。这个链路里最容易断的一环是计划订单转生产订单时销售订单号丢失。SAP 里计划订单和生产订单都有“销售订单”字段批量转换时如果选的转换程序不对、或者创建生产订单时没手工填销售订单号订单照样能创建、照样能报工收货但成本从此和销售订单没有任何关系。后面结算时要么结不到 COPA要么差异挂在生产订单上空转。ATP可用性检查在 MTO 里也比 MTS 严格。销售订单行项目的需求类别决定了系统是否做可用性检查、检查范围是什么。需求类别取的是物料主数据里的“需求类型”如果需求类型配成了普通 MTS 的需求销售订单甚至不会产生客户需求MTO 就直接失效了。这也是为什么我总建议新配 MTO 物料后第一时间用 VA01 建一张测试订单去 MD04 里确认客户需求真的出现再往下走。3. 后台配置与主数据一张配置单把 MTO 的先决条件列全MTO 能不能跑起来看主数据和后台配置。这里按“物料主数据 → 订单类型与成本核算变式 → 结算参数文件与需求类别”的顺序列一张配置清单每条都讲清楚配在哪、干什么用、建议怎么取值。3.1 物料主数据策略组、MRP 类型、需求类型一个都不能少物料主数据是 MTO 的第一道入口。重点看四个字段都在 MRP1/MRP4 视图里。字段维护位置作用MTO 常用取值MRP 类型MRP1物料是否参与 MRP、按订单还是按库存PD 表示 MRP按 MTO 场景保持 PD批量MRP1计划订单建议量取整方式EX 逐单、LTC 基于期间需求按单生产建议逐单策略组MRP4决定需求来源与消耗逻辑20 纯按单25 按单带预测需求类型MRP4决定销售订单行项目的需求类别按单生产常用“各别需求”类型这里面最容易被忽略的是“需求类型”。它不直接等于需求类别而是作为销售订单行项目需求类别的默认来源。如果物料主数据里需求类型配错比如配成了 MTS 用的需求类型那么 VA01 建单后行项目需求类别会预填成 MTS 的MD04 里不会出现客户需求MTO 链路从源头就断了。另外提醒一下计划员策略组只在需求管理层面起作用它不会自动把物料变成 E 库存。E 库存的出现是因为销售订单行项目用了需求类别“按订单对应特殊库存 E”需求类别和特殊库存标识是绑在 ATP 规则里的。判断一个物料是不是真的 MTO最靠谱的办法不是看策略组而是看 VA01 行项目的需求类别和 MD04 里的库存类型。3.2 订单类型相关参数、成本核算变式、结果分析码和差异码物料主数据配完剩下的是 CO 侧的配置。MTO 的成本核算用的是“按订单的产品成本核算”生产订单作为成本收集器订单上的每一项成本都要能追踪到销售订单。这背后由四块配置共同决定。配置对象配置路径/事务作用MTO 关键取值生产订单类型相关参数OPJH 或按订单产品成本核算路径给订单类型挂默认的成本核算变式、结算参数文件使用生产订单类型 PP01 或自定义类型成本核算变式OKKN在变式里维护结果分析码、差异码、成本核算逻辑按实际成本核算的变式结果分析码结果分析路径下定义决定在制品和收入储备怎么算按月结逻辑配置的分析码差异码差异计算路径下定义决定差异在结算时怎么分配、进哪些科目按订单结算的差异码结算参数文件OKO7决定订单结算接收方类型、是否允许结算到销售订单接收方类型选“销售订单”或 COPA 获利段这组配置的关系是层叠的CO01 创建生产订单时系统根据订单类型找到成本核算变式成本核算变式里带着结果分析码和差异码结算参数文件则决定了订单做完后差异往哪结。任何一环为空月结时都会报错或结算不到目标对象。实际项目中常见的问题是订单类型复制标准 PP01但成本核算变式里没有维护结果分析码或者复制时把结算参数文件带成了 MTS 版本结算规则里只允许内部订单不允许销售订单。这些都不会在建单时报错都是月结 KO88 时才暴露。所以配置完一定要做一张测试订单走完报工、收货、结算全流程再交付。3.3 成本对象设计生产订单、销售订单、COPA 怎么串起来MTO 里最关键的成本设计决策是差异最终结到哪。常见做法有两种我一般会按报表需求来推荐。第一种只做生产成本归集差异从生产订单结算到销售订单成本对象也就是“销售订单行项目”本身。这个方案最贴近 MTO 的本质销售订单就是一个成本对象收入有了成本也从生产订单结过来了一单赚多少直接能算出来。但如果销售订单已经开票、又发生后续费用成本归集期和收入确认期可能错开需要财务习惯这种节奏。第二种生产订单差异结算到 COPA 获利能力段。适合需要按客户、按产品做多维盈利能力分析的公司。结算时差异直接进入 COPA 的特定值字段比如产品、销售订单、客户月末直接跑获利能力报表。这个方案要求 COPA 的运营结构里维护了“销售订单”这个特征值字段否则差异进不来。这里要特别提醒一个坑如果有顾问把 MTO 的成本对象设成内部订单又没在内部订单上维护结算规则KO88 结算时会报“没有结算规则”或“接收方类型不符”。我做过几次项目后固定下来的做法是生产订单结算到销售订单行项目销售订单再挂 COPA 特征两头兼顾既不丢订单级成本也能支撑多维分析。4. 从 VA01 到 KO88走通 MTO 的销售订单、生产、结算全流程配置是骨架流程是血管。MTO 日常流程从销售订单创建开始到生产订单结算结束中间每一步都有必须检查的对象。下面按操作顺序走一遍每个关键步骤给出事务码、操作要点和期望结果。4.1 创建销售订单VA01 里先确认需求类别用 VA01 创建销售订单物料、数量、交货日期填好后重点看行项目的“需求类别”字段。如果物料主数据需求类型配置正确需求类别会自动带出按单生产对应的类别界面上能正常触发出货计划。如果需求类别显示为空或普通类别先别回车回物料主数据 MRP4 视图检查需求类型。保存后会生成销售订单号和行项目号。记住这两个号码后面所有操作都靠它追踪。创建完成后用 MD04 查看该物料应该能看到两类新元素一类是客户需求数量等于销售订单数量另一类是销售订单库存初始数量为零。只有看到这两行MTO 的需求侧才算真正打通。看不到说明需求类别或 ATP 配置有问题先去查需求类型不要继续往下做。4.2 跑 MRP 并转换计划订单销售订单字段不能丢需求确认后用 MD02 针对该物料跑单层 MRP或者放进 MD01 总排里一起跑。MRP 运行完MD04 里会多出一行计划订单数量跟客户需求一致。计划订单转生产订单有两种常用做法在 MD04 里选中计划订单行右键选择转换直接生成生产订单或者用 CO40/CO41 批量转换。无论用哪种转换后立刻用 CO03 打开生产订单检查抬头里的“销售订单”字段是否等于 VA01 保存的订单号。这是整个 MTO 流程里最不能省的一步。事务码操作内容检查重点VA01创建销售订单需求类别、计划行MD04查看需求/库存清单客户需求、销售订单库存MD02单层 MRP 运行计划订单数量与客户需求一致CO40/CO41批量转生产订单抬头销售订单字段非空CO03显示生产订单销售订单、行项目、组件无误如果计划订单上的销售订单号是空的转出来的生产订单也不会带。这个情况在手工创建生产订单时最容易发生CO01 创建后很多人忘记在抬头里填销售订单号结果成本归集全部断掉。4.3 报工与收货101 特殊库存 E不能收进普通库存生产完工后用 CO11N 做工序报工。报工只影响产能和工时确认不会产生库存。收货才是 MTO 流程的高危环节。MTO 收货要求移动类型 101特殊库存标识 E并且必须填写销售订单号。操作路径是 MIGO → 收货 → 生产订单行项目里调出“特殊库存”字段选成 E然后填入销售订单号。收货完成后MD04 里销售订单库存数量增加非限制库存不应有任何变化。最常见的手误是MIGO 里选了 101但特殊库存标识没改系统把成品收进了非限制库存。表面看库存总数对了实际上销售订单库存还是零后面 VL01N 交货时系统提示库存不足或者发完货后发现普通库存多了货、销售订单库存没扣。遇到这种情况先把错误的收货凭证冲销掉再按 101 E 重新收一次不要直接做库存转移否则 E 库存和非限制库存的对应关系会乱。4.4 发货、开票与月结从 VL01N 到 KO88 的完整闭环交货开票这一段主要由 SD 模块执行但 PP/CO 顾问要理解整个过程因为月结时成本结算依赖销售订单状态。VL01N 基于销售订单创建交货单VL02N 发货过账。发货过账时系统从销售订单库存 E 里扣减成品数量等于交货数量。全部交完后销售订单库存归零MD04 里的 E 库存行消失。之后 VF01 开票生成应收和收入销售订单状态变为已开票。月结阶段是 MTO 的收尾动作顺序固定KKA0 计算在制品/结果分析KKS1 计算订单差异KO88 执行订单结算。KKA0 按成本核算变式里的结果分析码计算未完工订单的在制品KKS1 把生产订单的实际成本与目标成本按收货数量乘标准成本做差算出差异KO88 把生产订单的余额和差异一起结算到销售订单成本对象或 COPA。下面是 MTO 日常操作的事务码速查表保存下来对新手很有用。VA01 创建销售订单关键行项目需求类别、销售订单号 MD04 查看需求与库存确认客户需求和销售订单库存 MD02 单层 MRP 运行生成计划订单 CO40 计划订单批量转换生产订单检查销售订单字段 CO03 显示生产订单成本核对销售订单号、收货数量 CO11N 工序报工录入确认数量与工时 MIGO 收货移动类型101、特殊库存E、销售订单号 VL01N 创建交货单基于销售订单 VL02N 发货过账从E库存扣减 VF01 开票生成收入 KKA0 在制品计算结果分析 KKS1 差异计算 KO88 订单结算结算到销售订单/COPA流程走到 KO88 成功后一张 MTO 订单的成本才真正闭环。这里要再次强调KO88 结算前必须确认生产订单抬头销售订单号存在、结算规则里有接收方、结果分析码和差异码都已配置。任何一项缺失月结就会发现一堆结算不掉的订单。5. MTO 实战避坑5 个把订单成本搞丢的常见问题与排查方法这一章集中写实施和月结中最高频的踩坑现场。每一条都按“现象 → 原因 → 解决”展开都是我见过不止一次的真实案例。5.1 生产订单没挂销售订单号成本结不到销售订单现象CO03 打开生产订单抬头“销售订单”字段是空的但生产订单照样报工、收货。月结 KO88 时订单成本要么结不到任何接收方要么只能结到默认的物料分类账销售订单利润报表里看不到这笔账。原因计划订单转换时销售订单号没带出来或者直接用 CO01 手工建单创建界面里没填销售订单号。很多人以为策略组是 20 就会自动带号实际上不管策略怎么配生产订单不会自动获取销售订单号。解决CO02 补上销售订单号和行项目号已经做了部分报工收货的补号后继续跑结算。批量转单时确认 CO40 选择的转换类型支持销售订单字段传递。建单这个动作不管谁做都要把“检查销售订单字段”养成肌肉记忆。5.2 收货进普通库存销售订单库存永远是空的现象MIGO 收货后MD04 里普通库存增加了销售订单库存没有变化。到了发货环节VL01N 交货单建出来了VL02N 过账时提示库存不足明明仓库说货早就入库了。原因MIGO 收货时移动类型是 101但特殊库存标识没有选成 E也没填销售订单号。系统按默认的普通库存收货货进了非限制库存销售订单库存当然没有。解决把这个物料凭证冲销再用 101 特殊库存 E 重新收货。如果已经发货过账牵扯的凭证更多不要自己乱调按凭证链一层层冲销重做。预防上可以在订单类型相关参数里预设特殊库存标识这样 MIGO 参照生产订单收货时自动带出 E减少人为漏填。5.3 结果分析码为空KKA0 直接报错现象月结跑 KKA0 算在制品时系统报“结果分析码未定义”或“订单中未维护结果分析码”整批订单没法计算。原因成本核算变式里没有维护结果分析码或者复制订单类型时把变式带成了空版本生产订单实际用的变式没有结果分析码。解决先在 OKKN 里检查生产订单实际使用的成本核算变式把结果分析码补上再从配置路径检查结果分析码本身是否在对应经营范围激活。补完配置后用 KKA0 重新计算当期在制品如果前期已经记过账不要直接删除冲销优先用结果分析调整的方式处理避免前期财务数据被动。5.4 销售订单变更数量差异残留在生产订单上现象客户原定 100 台中途改成 80 台。销售订单改了生产订单没同步仍然按 100 台投料、报工、收货。月末结算时生产订单上有大量差异金额和数量都对不上销售订单。原因VA02 修改销售订单数量和交货计划不会自动修改已经存在的计划订单和生产订单数量和需求。系统没有收到“减少 20 台”的信号MRP 也不会因为销售订单数量变更反向调整生产订单。解决销售订单变更后第一时间去 MD04 检查客户需求数量和相关需求数量手动调整计划订单或生产订单数量。已经收货的部分如果多收了 20 台 E 库存先做退货交货或把多余 E 库存转移出来。结算前必须保证生产订单收货数量等于销售订单最终交货数量否则当期差异永远说不清。5.5 月结顺序颠倒WIP 和差异重复计算现象KO88 结算完成后又有人补跑了 KKS1 差异计算发现结算金额变了或者 KKA0、KKS1、KO88 顺序乱导致在制品和差异重复进入报表财务对账对不上。原因MTO 月结顺序是固定的先结果分析在制品再差异计算最后结算。如果先结算、再算差异结算完的订单余额被人为改写会产生红字冲销凭证账面上看就是同一笔成本被人为动了两回。解决固定月结流程强制按 KKA0 → KKS1 → KO88 的顺序执行。批量处理时用 COHV 按工厂和订单类型选择未结算订单按顺序跑完再发布报表。每次跑完 KO88导出一份结算清单记录订单号、结算金额、结算时间留档备查。6. 月结前跑一遍这条验证链路MTO 差异不再解释不清最后分享一个我固定使用的验证技巧每个月结前抽一张已经交货开票的 MTO 订单按这条链路做一次完整核对基本能挡住八成以上的结算问题。第一步用 MD04 查这颗物料确认所有销售订单的 E 库存应发尽发。已经交完货的订单销售订单库存必须归零还有剩余量的先问清楚是实物没发完还是单据没走完不要让 E 库存长期挂在账上。第二步用 CO03 看生产订单成本构成。重点核对收货数量、目标成本金额、实际成本三大块。目标成本应该等于收货数量乘标准成本实际成本由投料、人工、制造费用组成。两者差额就是差异这个数必须和 KKS1 算出来的差异一致如果不一致说明成本还没完全过账或者还有报工没做。第三步用 FBL3N 查看结算过账记录。生产订单结算时系统会生成借生产成本转移、贷生产订单的过账结算到销售订单成本对象时能看到销售订单上的成本累加。如果 FBL3N 查询结果里销售订单成本对象没有金额说明结算规则或接收方类型有问题。第四步用 COPA 相关报表核对收入与成本是否匹配置。对一张订单开票收入和已结转成本是否同时存在只确认收入没结转成本或者只结了成本没有收入都是异常信号需要追溯销售订单状态和结算是否完成。我自己的习惯是除了抽检单张订单每周还会用 COHV 导出一份“未结算生产订单清单”按销售订单号、开票状态、成本余额三列展开发给计划员和财务各看一遍。这个习惯帮我挡掉了不知道多少次“月底差异解释不清”的局面。曾经就因为漏看了一个销售订单数量变更差异解释了两天从那以后这条链路我一次都不敢省。希望帮到你。本文还有配套的精品资源点击获取