简介:本资源是一份面向SAP顾问、成本控制专员及生产计划实施人员的MTO(按单制造)模式深度实践指南,系统解决定制化生产场景下销售订单控制策略选择、后台配置落地与期末成本结算等核心难题。资料以1个3.29MB的PPTX文件呈现,共142页,涵盖MTO理论框架、不采用/采用销售订单控制的双路径配置详解、成本对象控制逻辑、销售业务全流程映射、期末结算活动设计及典型决策对比分析,内容结构完整、图示丰富、参数配置要点明确。目前已有7658人学习下载,适合中高级SAP用户快速掌握MTO模式在成本核算与生产执行中的差异化实现方案,尤其对理解销售订单作为成本对象的收益追踪、在制品结转逻辑及库存估值方式具有强实操指导价值。
1. SAP MTO生产模式配置及操作详解:不是讲概念,是拆开给你看怎么在真实系统里跑通订单级成本闭环
你有没有遇到过这种场景:客户下了个定制化设备订单,合同金额850万,交期紧、BOM多层嵌套、外协工序占60%,但财务月底问“这个单到底赚不赚”,你翻遍CO模块却只能拼凑出半张成本表——生产订单结算了,但销售订单还没开票;工单发料进了库存,可这笔料到底是为哪个客户备的?系统里查不到归属。这不是流程没走完,是MTO底层控制逻辑没配对。这份《SAP MTO生产模式配置及操作详解》不是PPT式理论汇编,而是某制造企业连续三年跑MTO业务后沉淀下来的实操包:它把“销售订单作为成本对象”这一核心机制,从后台配置参数(比如OKB9里如何勾选“销售订单项”)、前台操作断点(MRP运行时如何强制触发销售订单库存预留)、成本流拆解(为什么无价值库存下材料贷方不进销售订单而进生产订单)全部掰开揉碎。适合两类人:一类是刚接手MTO模块配置的ABAP/PP/CO顾问,需要避开“配置全勾上但结算报错”的玄学陷阱;另一类是计划/成本岗业务人员,想搞懂为什么自己填的销售订单号,在CO-PA报表里始终不显示毛利。它不教你怎么装SAP,但能让你明天上午就敢在测试系统里改完配置、跑通一笔从SD订单→PP生产→MM收货→CO结算的全链路。
2. MTO两种成本控制模式的本质差异:为什么“用不用销售订单控制”直接决定你能看到几层成本明细
2.1 不采用销售订单控制:按产品大类归集,适合高周转、低定制化场景
这种模式下,销售订单仅作为驱动生产的触发器,不承担成本归集功能。系统将所有为MTO订单生产的成本,统一计入“产品组成本中心”或“半成品库存”,直到最终发货开票时,才通过CO88或KKS1一次性结转至获利能力分析(CO-PA)。典型适用场景如:标准机柜组装(客户只选颜色和接口数量)、包装定制(同一主料+不同印刷图案)。此时成本核算颗粒度停留在“产品组”级别,无法回答“4815号订单比4763号多花了多少外协费”这类问题。配置关键点在于:在OPJK中禁用销售订单作为成本对象,在OKB9中取消勾选“销售订单项”,并在OBYC中将生产订单的差异科目指向“产品组差异账户”。注意,此时销售订单库存(SO stock)必须设为无价值库存(Unvaluated),否则系统会在GRN时尝试将材料成本过账至销售订单项,导致凭证报错“Cost object not allowed”。
2.2 采用销售订单控制:订单即成本对象,实现端到端盈利追踪
当勾选“销售订单项作为成本对象”后,系统会为每个销售订单行项目(SO item)生成独立的成本对象编号(如4815/10),所有关联的生产订单、采购订单、外协订单的成本,均实时归集至此对象。这意味着:
- 生产订单发料时,材料贷方不再过账至库存科目,而是直接借记销售订单项;
- 外协加工费发票校验时,服务费用自动分配至对应销售订单项;
- 甚至运输费、质检费等间接费用,也可通过成本要素分配规则(如KA01定义的作业类型)分摊进去。
这种模式支撑的是真正意义上的订单级盈利分析(Order Profitability Analysis),报表可输出“4815号订单:材料成本600万、人工180万、外协220万、毛利12%”。但代价是系统负荷显著增加——每笔GRN、GI、发票都会触发额外的成本对象检查与更新。配置核心在三处:
- OKB9事务码:必须勾选“Sales Order Item”并指定“Valuation Area”(通常为工厂);
- OVKK事务码:定义销售订单项的默认成本要素(如材料消耗用400000,人工用500000);
- OBYC事务码:为销售订单库存(BSX)设置特殊总账科目,区别于普通库存(BSX)。
2.3 两种模式的成本流对比:一张表看清资金和数量如何分离
| 环节 | 不采用销售订单控制(无价值SO库存) | 采用销售订单控制(有价值SO库存) |
|---|---|---|
| 销售订单创建 | 仅生成SD凭证,不创建CO对象 | 自动生成CO对象(如4815/10),状态为“Created” |
| MRP运行 | 生成计划订单,需求来源为“销售订单”,但无库存预留 | 生成计划订单+销售订单库存预留(SO stock reservation),锁定物料可用量 |
| 生产订单发料(MB1A) | 材料贷方过账至“生产订单”(如1000001),借方为“生产订单” | 材料贷方过账至“销售订单项”(4815/10),借方为“销售订单库存”(SO stock) |
| 外协加工收货(GRN) | 服务费用过账至“生产订单”,后续结算至产品组 | 服务费用直接过账至“销售订单项”,无需二次分配 |
| 发货过账(VL02N) | 库存减少,收入确认,成本结转至CO-PA(按产品组) | 销售订单库存减少,收入确认,成本自动结转至该销售订单项的CO-PA行项目 |
| 期末结算(KKS1) | 结算生产订单差异至产品组差异账户 | 结算生产订单差异至销售订单项,生成“订单未完成成本”(WIP) |
提示:表格中“销售订单库存”不是物理仓库,而是SAP逻辑库存类型(Stock Type = E),其存在意义在于隔离不同客户的在制品。采用销售订单控制时,必须启用此库存类型,否则MRP无法生成预留。
3. 后台配置实操:从零开始搭一套可跑通的MTO环境(含关键参数值)
3.1 基础主数据准备:物料、BOM、工作中心缺一不可
MTO模式对主数据质量极度敏感。以某定制化泵机组为例:
- 物料主数据(MM01):物料类型必须为
FERT(产成品)或HALB(半成品),在“MRP视图”中设置:MRP类型=PD(MRP),MRP控制者=0001(标准),特殊采购类型=E(销售订单);在“会计视图”中,评估类(Valuation Class)需与销售订单库存科目匹配(如3000对应SO stock)。 - BOM(CS01):必须使用“销售订单BOM”(Item Category =
L),而非标准BOM。关键点在于:组件行项目需勾选“按销售订单展开”(Explode for Sales Order),否则MRP无法将子件需求关联至具体订单。 - 工作中心(CR01):在“成本核算”标签页中,必须维护“作业类型”(如
1000为人工,2000为机器),并确保其在KP26中已分配至成本中心。若漏设,生产订单确认时将无法采集人工成本。
3.2 MTO专用配置:OPJK、OKB9、OVKK三步定乾坤
步骤1:定义MTO生产订单类型(OPJK)
进入OPJK,复制标准订单类型PP01为ZMTO,修改关键字段:
- Control Key(控制码):改为
PP03(支持销售订单控制); - Requirement Type(需求类型):设为
KE(销售订单相关需求); - Account Assignment(账户分配):勾选“Sales Order”并指定“Sales Order Item”为必填。
参数说明:
PP03控制码是系统识别“此订单可绑定销售订单”的开关,若仍用PP01,即使后续配置OKB9,系统也会在订单创建时报错“Account assignment category not allowed”。
步骤2:激活销售订单项成本对象(OKB9)
在OKB9中,选择公司代码+控制范围,找到“Sales Order Item”行:
- 勾选“Active”;
- “Valuation Area”选择对应工厂(如
1000); - “Cost Object Type”保持默认
01(销售订单项)。
参数说明:“Valuation Area”必须与物料主数据中的评估区域一致,否则GRN时系统找不到SO stock科目,报错“Valuation area not found for sales order item”。
步骤3:配置销售订单项默认成本要素(OVKK)
进入OVKK,输入销售订单类型(如OR)和项目类别(如TAN),维护:
- Cost Element(成本要素):
400000(材料消耗); - Debit/Credit(借贷方向):
D(借方); - Account Type(科目类型):
K(成本要素)。
参数说明:此处定义的是“销售订单项默认借记哪些成本要素”。若未维护,生产订单发料时系统无法确定应借记哪个成本要素,导致凭证报错“Cost element not defined for sales order item”。
3.3 关键增强点:让MRP真正按订单驱动(OMDQ + OVZ2)
标准MRP对MTO支持较弱,需两个增强配置:
- OMDQ事务码:在“MRP类型”
PD下,将“Requirement Type”KE的“Planning Strategy”设为20(Make-to-Order),并勾选“Sales Order Stock”; - OVZ2事务码:定义“销售订单库存”的特殊移动类型(如
601),确保GRN时物料进入SO stock而非普通库存。
实操验证:配置完成后,运行MD01,查看计划订单详情——“Requirement”字段应显示“Sales Order: 4815/10”,且“Stock Type”为
E(SO stock),而非01(非限制使用库存)。
4. 前台操作全流程:从SD订单到CO结算,每一步都附截图级指令
4.1 创建销售订单(VA01):必须带“MTO标识”才能触发后续逻辑
在VA01中,输入客户、物料后,关键操作:
- 项目类别(Item Category):必须为
TAN(标准MTO项目),不能选TAV(标准MTS); - 计划行(Schedule Line):在“Delivery Date”旁点击“计划行详情”,勾选“Sales Order Stock”;
- 账户分配(Account Assignment):输入销售订单号(如
4815)及行项目号(10),系统自动生成CO对象编号。
逻辑说明:
TAN项目类别是系统识别“此行为MTO订单”的唯一标识。若误选TAV,MRP将按MTS逻辑生成计划订单,不会创建SO stock预留,后续所有成本归集失效。
4.2 运行MRP(MD01):看懂计划订单里的“销售订单”字段
执行MD01后,查看生成的计划订单(如PL00000123):
- 双击进入详情,在“Requirements”标签页,确认“Requirement”列显示“Sales Order: 4815/10”;
- 在“Stock Type”列,确认为
E(SO stock); - 若显示
01或为空,则说明OMDQ配置有误或项目类别选错。
参数说明:“Sales Order: 4815/10”是系统将需求与成本对象绑定的凭证。没有这一行,生产订单创建时无法继承销售订单号,成本将流入错误对象。
4.3 创建生产订单(CO01):自动带入销售订单号是成败关键
在CO01中,输入物料、工厂后:
- 点击“Order Type”旁的放大镜,选择
ZMTO(第3.2节配置的订单类型); - 系统自动弹出“Account Assignment”窗口,必须手动输入销售订单号
4815及行项目10; - 确认后,订单抬头“Account Assignment”字段显示“Sales Order: 4815/10”。
逻辑说明:
ZMTO订单类型强制要求账户分配,但系统不会自动填充销售订单号——这是人为确认环节。若此处留空,订单创建成功但成本对象为0000000000,所有发料、确认都将失败。
4.4 发料与确认(MB1A / CO11N):成本实时归集到销售订单项
- 发料(MB1A):输入生产订单号,选择组件,移动类型
261(发料至生产订单);系统自动将材料贷方过账至“销售订单项4815/10”,借方为“销售订单库存”。 - 确认(CO11N):输入生产订单,确认工时;系统根据KP26中定义的作业价格,将人工/机器成本借记至“销售订单项4815/10”。
验证方法:事务码
KOB1,输入销售订单项4815/10,查看“Actual Costs”明细——应包含材料、人工、作业等所有已发生成本,而非空表。
5. 避坑指南:这5个错误让我重装了三次测试系统
5.1 现象:MRP运行后计划订单无“Sales Order”字段,Stock Type为01
原因:OMDQ中未为需求类型KE分配规划策略20,或销售订单项目类别误设为TAV。
解决:检查OMDQ配置,确保KE对应20;返回VA01,修改项目类别为TAN并重新保存订单。
5.2 现象:生产订单创建时提示“Account assignment category not allowed”
原因:订单类型ZMTO的控制码未设为PP03,仍为PP01。
解决:进入OPJK,找到ZMTO,将Control Key改为PP03,保存并激活。
5.3 现象:发料(MB1A)后,KOB1查不到销售订单项成本,材料成本进了生产订单
原因:OKB9中未勾选“Sales Order Item”或“Valuation Area”与工厂不匹配。
解决:检查OKB9,确认勾选且Valuation Area为正确工厂代码;若工厂代码变更,需同步更新物料主数据中的评估区域。
5.4 现象:外协订单收货(MIGO)时,服务费用未归集至销售订单项
原因:外协采购订单未在“Account Assignment”中输入销售订单号,或OVKK未为该采购类型维护成本要素。
解决:创建采购订单(ME21N)时,在“Account Assignment”标签页输入销售订单号;检查OVKK,为采购订单类型(如NB)维护对应成本要素。
5.5 现象:发货(VL02N)后,CO-PA报表中无该销售订单毛利数据
原因:销售订单未在“Profitability Analysis”视图中激活PA特性(如0CUSTOMER、0MATERIAL),或KKS1结算时未勾选“Sales Order Item”。
解决:在OVK1中检查PA特性分配;执行KKS1时,在“Selection”界面勾选“Sales Order Item”,并指定销售订单范围。
6. 期末结算与成本验证:用三张报表交叉验证订单成本是否真实闭环
6.1 第一张表:销售订单成本估算(CK11N)——看“应该花多少”
CK11N是MTO成本控制的起点。以销售订单4815/10为例:
- 输入销售订单号、工厂、成本核算变式(如
INT); - 执行后生成成本估算(Cost Estimate),包含:
- Material Cost:BOM各层级物料标准价之和;
- Production Cost:工艺路线中各工序作业成本(人工+机器);
- Overhead Cost:按成本要素分配的间接费用(如水电、折旧)。
关键技巧:CK11N结果必须与实际发料、确认成本趋势一致。若估算材料成本为600万,而KOB1中实际材料为650万,需检查BOM组件价格是否更新,或是否存在替代料未维护。
6.2 第二张表:销售订单实际成本(KOB1)——看“到底花了多少”
KOB1是验证成本归集准确性的核心工具。输入销售订单项4815/10,筛选“Actual Costs”:
- Material:应等于所有关联生产订单的MB1A发料总额;
- Labor:应等于所有CO11N确认的人工工时×作业价格;
- Overhead:应等于所有作业类型(如
1000)的实际过账额。
关键技巧:若KOB1中某成本要素为空,立即检查OVKK配置——90%的归集失败源于此处遗漏。
6.3 第三张表:销售订单获利分析(KE30)——看“最终赚不赚”
KE30是MTO价值闭环的终点。执行KE30,设置:
- Characteristic:
0SALESORDER=4815; - Key Figure:
0AMOUNT(收入)、0COST(成本)、0PROFIT(毛利)。
关键技巧:KE30中
0COST必须严格等于KOB1中4815/10的“Actual Costs”总额。若存在差异,说明有成本未归集至该销售订单项(如外协订单未绑定、运输费未分配),需用KSB1反查凭证源头。
6.4 终极验证:用KKS1结算后,检查WIP与已实现成本
执行KKS1,选择销售订单项4815/10,勾选“Settlement to Profitability Analysis”:
- 结算前:KOB1中“WIP”(在制品)应大于0(表示订单未完工);
- 结算后:KOB1中“WIP”归零,“Actual Costs”转入KE30的
0COST; - 交叉验证:KE30中
0COST= KOB1结算前“Actual Costs” + “WIP”。
血泪经验:我曾因KKS1未勾选“Sales Order Item”,导致所有成本被结算至产品组,KE30中
4815的0COST为0。从那以后,我每次执行KKS1前,强制打开OKB9再确认一遍“Sales Order Item”是否激活,并在KOB1中先查WIP值是否合理——这三步成了我的肌肉记忆。希望帮到你。
本文还有配套的精品资源,点击获取