简介:《SAP CO 成本对象控制:按生产订单控制实战指南》是面向SAP CO模块实施顾问、成本会计及制造企业生产管理人员的操作手册,围绕以生产订单为核心的成本对象控制,指导读者完成从后台配置到前台业务的全流程落地。压缩包内含1份docx格式文档,大小4.32MB,文档以图文步骤串联SPRO IMG配置、MRP类型定义、能力计划、公式参数标准值、标准值码、控制码、工作中心与工艺路线设置,并给出KS01、KP26、KP06、KSPI等事务代码的实操说明。目录按SPRO配置、系统操作准备分层,从MRP主数据、工作中心、工艺路线到物料类型逐步展开,并配有截图与操作步骤,便于对照SAP GUI实操;读者可按目录逐步完成成本对象从计划到结算的配置与验证,快速掌握生产订单成本跟踪、分析及控制方法。已有192人学习,适合希望系统梳理SAP CO按单生产控制路径、提升实操能力的中高级用户。
1. 生产订单控制:SAP CO 里决定成本核算成败的那条主线
很多企业上 SAP 时,CO 模块最核心的需求就是搞清楚“这张生产订单到底花了多少钱”。但实际跑起来,成本不对、归集不到订单、结算抛错,八成不是财务操作的问题,而是后台成本对象控制没有按生产订单的逻辑建好。说得直白一点:生产订单控制就是给每一张订单建一条独立的“成本收纳管道”,从物料发料、工时报工、费用分摊到差异结算,全部沿着这条管道走。适合谁看?正在做 CO 模块实施的顾问、刚接手生产订单成本核算的财务关键用户,以及被 PP 和 CO 边界问题反复折磨的运维人员。这篇实战笔记按项目推进顺序拆解:SPRO 配置打底,物料与 BOM 准备,再从生产订单全流程走到产品成本估算验证,最后把最容易翻车的几个点单独拎出来说。
2. SPRO 后台的底层配置:MRP、公式参数与控制码的逻辑链
生产订单控制这件事,后台配置的起点不在 CO 模块,而在 PP 侧的 MRP 和工艺路线基础数据。很多顾问第一次配的时候会忽略这层关系,结果到后面发现订单的成本核算字段灰着、作业类型带不出价格,再回头翻配置。这章把从 MRP 类型到控制码这条链路上每个节点的作用和参数讲透。
2.1 定义 MRP 类型与 MRP 控制者:为什么和生产成本没有直接关系
事务代码 OMDQ 配置 MRP 类型,正文里以 ND 为例。这里要厘清一个常见误区:MRP 类型控制的是“主生产计划采用哪种计划方式”,它只决定物料是 MPS 还是 MRP 计划,或者根本不走计划。ND 类型在 SAP 标准配置里属于“不进行 MRP 计划”的范畴,所以文档里特意强调“MRP 的类型不会对物料产品的生产起任何控制作用”。这句话的意思是:MRP 类型不参与成本核算逻辑,它只是物料主数据上的一个计划属性字段。
紧跟着是 OMD0 定义 MRP 控制者。MRP 控制者是一串编号,作用是标识负责那个物料可用性监控的人或小组。它本质上是“筛选器”,后续 MRP 运行结果可以按控制者编号过滤查看。注意它和生产订单中的“负责人”是两回事,生产订单上的负责人是另外的字段。为工厂 F011 分配 MRP 控制者 F01,这一步做完后,物料主数据 MRP1 视图里才能选到这个编号。
2.2 能力类别与公式参数:作业类型计算的源头
OPCD 定义能力类别,文档中定义了机器和人工工时两类。为什么要在这里定义能力类别?因为工作中心的产能是基于能力类别来维护的,一条产线上有多少台机器、多少个工人,会分别对应不同的能力类别。后续创建作业类型时,也是基于这类能力去建立机器工时和人工工时两个核算维度。
真正影响成本核算的,是公式参数的配置。OP7B/OPCR 定义公式参数标准值,工序文档里用的参数是 SAP_01、SAP_02、SAP_03。这三个参数在 SAP 标准系统中的含义分别是:SAP_01 代表人工工时、SAP_02 代表机器工时、SAP_03 代表准备时间。然后在 OPCS 定义公式,对应关系是 SAP001(人工工时公式)、SAP002(机器工时公式)、SAP003(总成本公式)。
这里有一个实际项目里经常踩的坑:公式参数定义后必须“激活”,否则程序运行直接退出,中文环境里最容易出现“无法评估公式”的报错。定义完工序侧公式后,还要回到 OP7B/OPCR 把同一套参数维护到工作中心侧,因为工作中心的公式参数标准值是确定“计划工时怎么算”的关键。
2.3 标准值码与控制码:决定“哪些值参与成本核算”
OPCM 定义标准值码。标准值码的作用是给工艺路线工序里的六个标准值(Vorgabewerte)赋予业务含义。文档里以 SAP1 常规生产为例,这套标准值码里定义了设置时间、机器时间、人工时间等字段的排列位置。注意每个标准值在标准值码里必须设置“来源=2”,表示这个字段值来自工艺路线工序,而不是来自其他对象。
标准值码定义完后,OPCG 定义控制码。控制码是一个“开关集合”,它告诉系统这个工序要不要做排程、要不要产生能力需求、要不要参与成本核算、要不要做报工确认。以 PP01 为例,这个控制码一般会勾上调度、能力、成本核算、自动确认。如果你发现生产订单的实际成本里“作业成本”总是为零,大概率是控制码上的成本核算勾没打。控制码一旦被工艺路线引用,修改后所有引用该控制码的工艺路线都会受影响,所以上线后不建议频繁调整。
这里把两套配置串起来看:标准值码决定工序上的时间值分别是什么含义,公式参数决定这些值怎么转换成人工/机器工时,控制码决定工时能不能计入订单成本。三者缺一个,生产订单的作业成本就出不来。
3. 工作中心与作业类型联动:从成本中心到计划价格的完整链路
工作中心在 PP 侧是产能和排程的载体,在 CO 侧它是作业价格的计算来源。配置不当,后面 KP26 计划价格和 KSII 实际价格会出现偏差,订单成本核算自然不对。第 3 章重点讲工作中心 CR01 创建前的一系列前置配置,以及成本中心、作业类型、计划价格之间的钩稽关系。这是生产订单成本核算的基准。
3.1 作业类型与成本中心:KL01 与 KS01 的对应关系
KL01 创建作业类型 CR01(机器)和 CR02(工时)。作业类型可以理解为“工厂内部服务的计价单位”,相当于把成本中心发生的费用通过作业数量分摊到使用方。这里的关键是:作业类型创建时,必须指定对应的成本中心和成本要素。
KS01 创建 COPC 专用的成本中心 F011006。为什么强调“COPC 专用”?因为生产订单成本归集要求成本中心与作业类型、利润中心、业务范围等维度完全匹配。如果订单归属的成本中心与作业类型对应的成本中心不一致,KL01 里作业类型的默认成本中心就选得不合理,订单报工时作业价格就取不到数。
3.2 KP26 与 KP06:计划数量和计划价格怎么配合
KP26 维护成本中心 F011006 和作业类型 CR01、CR02 的计划数量。这里包含两个数量维度:计划数量指固定期间计划提供的作业数量,能力数量指工作中心能接受的最大作业数量。系统根据这两个值计算作业能力利用率,进而在 KSPI 计算计划价格时作为分母参考。
KP06 维护成本中心和作业类型的计划价格。这里要维护生产成本要素,即作业类型对应的初级成本要素,这个成本要素与财务费用科目对应。如果作业类型没有分配成本要素,KP26 即使录入了计划数量,KSPI 也会因为缺少计划成本而报错。
KSPI 计算计划价格就是把 KP06 的作业成本除以 KP26 的计划作业数量,得到作业计划价格。这个价格会被后续生产订单计划成本核算引用。不同工厂的成本核算变式不同,KSPI 计算的期间和价格类型也可能不同,建议在月结前跑一次 KSPI 重估计划价格,避免使用上期价格。
3.3 工作中心 CR01 的建模:三个视图里容易被忽略的字段
工作中心 CR01 创建时需要维护三个页签:基本数据、缺省值、成本核算。基本数据页签常用的是工作中心类别、负责人、位置等,这里不多说。缺省值页签要维护标准值码,即前面定义的 SAP1;同时要维护控制码 PP01。这两个缺省值会被复制到后续创建的工艺路线工序中,如果缺省值里漏了标准值码,后续工序成本核算时系统不知道把工序时间折算成什么,成本计算结果是 0。
成本核算页签是 CO 顾问最该盯的地方。这里需要定义作业类型 CR01 和 CR02,以及对应的人工工时和机器工时公式参数,告诉系统“这个工作中心产出的人工工时和机器工时分别按哪个公式来计算”。同时把成本中心 F011006 分配给工作中心,这样作业价格才能从成本中心带过来。如果成本中心分配错了,后面订单上的作业成本就归集到错误的成本中心,月结对账时差异很难查找。
配料和工序排程相关的参数集中在工艺路线里,CA01 创建工艺路线时需要维护物料类型分配和工序集。如果工艺路线里工序的“工作中心”引用 CR01,系统会自动带出 CR01 上的作业类型和默认公式参数;如果工作中心没有完整配置,工艺路线保存时不会报错,但实际核算时就会黑匣子一样地产生 0 成本。
T-Code: KL01 作业类型: CR01 (机器) 作业类型: CR02 (工时) 成本中心: F011006 成本要素: 手工创建初级成本要素并关联费用科目参数说明:作业类型名称建议用有业务含义的编号,如 CR01 代表机器作业、CR02 代表人工工时。成本要素必须是初级成本要素类型,因为在作业类型计价流程中,作业成本要直接从成本中心转入生产订单。
4. 物料主数据与 BOM 准备:COPC 物料类型和层级卷算的前置条件
生产订单控制要跑得通,物料侧的准备同样重要。这一章进入系统操作准备阶段,目标是把原材料、半成品、产成品三类物料建好,并把 BOM 搭出层级。对 CO 实施来说,物料主数据关心的不是 MRP 视图里的计划参数,而是物料类型的成本核算属性和评估类,以及 BOM 的层级结构如何影响成本向上卷算。
4.1 三类物料的类型配置与编号范围分配
正文中用事务代码定义了 COPC 物料类型 ROH2(原材料)、HAL2(半成品)、FERT2(产成品)。为什么不能直接用标准物料类型 ROH、HALB、FERT?因为标准物料类型里的数量更新和价值更新开关不一定满足 COPC 场景。复制标准物料类型创建 ROH2 等新类型时,关键要检查物料类型的“数量/价值更新”标志:数量更新控制物料收发存是否更新数量,价值更新控制是否更新财务金额。COPC 场景要求两者都勾上,而且价值更新必须选择“按数量/价值”并指定评估类分组。
物料类型定义完成后分配编号范围,事务代码 MMNR/MM06。编号范围不能和现有标准物料冲突,比如 ROH2 用 100000-199999、HAL2 用 200000-299999、FERT2 用 300000-399999。范围分配错误时,物料创建保存会报“没有为物料类型分配编号范围”之类的提示。
4.2 创建原材料初始库存:标准采购订单收货入库
原材料 ROH2 的初始数量和价值,正文走的是创建标准采购订单再收货入库的路径。这里有个制造型企业常见的习惯:期初原材料通过采购流程录入,库存数量和价值一次性带入,既保证了财务期初数据的完整性,也省去直接做初始化库存的麻烦。
MB01 创建标准采购订单,供应商可以是真实供应商或内部供应商。收货入库用 MIGO(正文中对应“标准采购订单收货入库”),输入采购订单号后系统自动带出物料、数量、价格。此时库存数量和价值进入物料主数据,查询方式有两种:数量侧用 MMBE 查库存,价值侧用 MB51 查看物料凭证(英文原文的“收货入库结果查询(价格)”)。
4.3 BOM 层级决定成本卷算的方向
CS01 创建 BOM:先建半成品 HAL2 的 BOM(挂原材料 ROH2),再生产成品 FERT2 的 BOM(挂半成品 HAL2)。这里最容易被忽略的是 BOM 的有效期间。如果 BOM 有效期起始日期晚于生产订单的计划开始日期,订单创建时 BOM 无法展开,组件行项目就出不来,发料和成本归集自然无从谈起。
多级 BOM 用 CSMB 显示,作用是核对层级是否完整:产成品 FERT2 → 半成品 HAL2 → 原材料 ROH2。成本估算 CK11N 时“带数量结构”的成本核算就是从这张多级 BOM 展开的,BOM 层级不完整,估算的结果一定不完整。BOM 里组件数量也值得检查——单位转换错误是高频问题,物料主数据里基本单位是 KG、BOM 里数量按 EA 维护时,系统会找转换因子,找不到时估算直接报错。
5. 生产订单全流程:从 CO01 创建到 CO02 关闭的完整闭环
生产订单管理是成本对象控制的核心执行层。一张订单从创建、下达、发料、报工、收货、在制品计算、差异计算到结算关闭,每个环节都会影响成本归集和月结。第 5 章先讲订单类型等基础配置,再按实际业务操作顺序走完整条线,最后把最常翻车的五个点单独列出来避坑。
5.1 生产订单类型与参数配置:F021 的订单类型如何影响成本对象
OPJH 定义生产订单类型 F021。订单类型决定了订单的编号范围、结算参数文件、计划参数文件、控制参数等。文档里的 F021 是一套自定义订单类型,注意这里“F”是工厂 F011 的前缀,不要和 SAP 标准的 ZP01、PP01 混淆。OPJL 定义结算参数文件 F021,结算参数文件控制的是订单结算的默认规则:结算到物料、成本中心、内部订单还是获利段,以及结算比例。如果是按生产订单控制,目标成本对象就是产成品物料。
OPK0 为生产订单类型分配编号范围。编号范围可以和物料编号范围做同样的分段策略,比如 F011 工厂的生产订单用 0000000001-9999999999。生产订单编号是后续所有凭证查询的关键字,建议用工厂编号开头,减少不同工厂间的识别成本。后续 OPJK 定义计划参数、OPKP 定义调度员、OPL8 定义计划参数细节,这些参数影响订单计划开始/结束日期的自动计算和排程方式。
OPJ3 维护生产订单类型与工厂控制信息,这里有两个关键勾选项:订单下达和报工确认。订单下达决定订单是否允许物料发料;报工确认决定工序完成后是否必须做确认动作。若订单未下达就发料,系统会报错或者产生未允许的移动类型。实际项目里常出现“财务催着要成本但订单还没下达”的情况,所以在做月结前检查是必做动作。
5.2 CO01 到 CO02:订单成本归集的八个关键步骤
订单创建 CO01,输入物料号、订单类型、工厂、计划数量等信息。系统会根据物料 BOM 自动展开组件,并根据工艺路线展开工序。此时订单上的计划成本已经能看到一个初算值——计划成本等于 BOM 组件数量乘以物料价格、工序工时乘以作业价格。
订单下达 CO02(或 CO15),下达后订单状态变为“已下达”,系统允许对该订单进行后续发料和报工。MB1A 发料时选择移动类型 261(订单发料),输入订单号后系统自动按 BOM 组件列出物料和数量。这时只要修改实际发料数量即可,不需要手工逐行录入物料编码。财务凭证侧的自动记账科目由 OBYC 事务代码配置的 GBB/BSX 等事务键决定。
生产订单报工 CO11N(实际工时确认)回写工序实际工时,这是订单作业成本归集的依据。报工时系统会给出每个工序的确认数量,确认后订单上的实际作业价格将被带入。作业价格重估 MFN1 在月结前执行,目的是用实际作业价格替代计划作业价格。若工厂期间内作业价格差异较大,不执行 MFN1,订单成本会保留计划价格,差异全部挂到材料成本差异里。
半成品收货 MB31 按生产订单收货,输入订单号和交货数量,系统产生移动类型 101 的物料凭证。注意“全部收货”标记:若勾选,订单被认为是“完工入库”,后续不再接受额外收货,这个标记如果误勾会导致后续补货无法处理。
在制品计算 KKA0 定义在制品计算期间,KKAX 执行在制品成本计算。在制品的含义是已投入成本减去已收货价值后的余额,只要订单未完工且存在投入,系统会自动计算在制品。差异计算 KKS2 计算订单实际成本与目标成本之间的差异,出现大额差异时先检查物料价格和作业价格是否有大幅波动。最后 KO88 做订单结算,将订单余额全部清掉。结算规则可以在 KO88 执行前用 KO02 维护,默认情况下系统按订单类型自动生成结算规则。
5.3 避坑指南:生产订单全流程五个高频故障
坑一:订单无法下达,提示“状态:未释放”。
现象:CO02 点击下达按钮没有反应,或者提示订单状态不对。 原因:生产订单类型没有勾选“订单下达”参数,或是用户没有下达权限。 解决:检查 OPL8 订单类型参数中的“下达”状态参数文件,确认包含“创建时未下达”的状态即可。权限方面检查对象 B_USERSTAT 的授权。
坑二:MB1A 发料保存时报“数量不在容差范围内”。
现象:按 BOM 自动带出的组件数量无法过账。 原因:BOM 中数量为理论用量,而实际发料数量与 BOM 数量差异过大,超过容差设置。 解决:OMJJ 中维护移动类型 261 和 262 的容差范围,或者检查 BOM 数量是否维护错误。临时处理先做无 BOM 发料,但要事后补正 BOM 数据。
坑三:订单成本明细里没有作业成本。
现象:CO03 报表中物料成本有数据,但作业成本行项目为空。 原因:工艺路线工序未引用控制码 PP01,或控制码没有勾选“成本核算”指标。 解决:检查工序的控制码是 PP01 还是其他类型;如果引用的是其他控制码,需要调整工序或修改控制码定义。同时确认工作中心 CR01 的成本核算页签里已经定义公式参数和作业类型。
坑四:KKS2 计算差异时提示“订单不存在”或“订单已经结算”。
现象:差异计算报错或者结果为空。 原因:订单已经执行过 KO88 结算,或者订单类型未分配差异计算变式。 解决:CO03 查看订单结算状态,若已结算则差异已经转出,需要先冲销结算再重新计算。若订单类型未分配差异计算变式,去 OPJK 检查订单类型的“差异计算”参数是否维护。
坑五:半成品收货后,订单显示“已交货”但仍有大额在制品。
现象:MB31 收货数量已经等于订单数量,但 KKAX 计算后依旧生成在制品。 原因:订单没有勾选“技术性完成”,系统不认为订单已完工。 解决:CO02 把订单状态改为“技术性完成”后再执行 KKAX。技术性完成可以通过状态参数文件自动触发,也可以在订单操作里手动设置。若不勾选,订单即使交货完成也会被继续累计在制品。
6. 用 CK11N 验证后台配置:成本估算与价格发布是最后一道体检
前面的配置都完成后,还有一个环节能检验整个后台配置是否正确——产品成本计划。如果成本估算的结果与生产订单的实际成本差异太大,说明后台哪一个环节的参数设置还有问题,提前发现能避免月结时大量返工。
6.1 带数量结构的成本估算:为产成品算出标准成本
CK11N 执行带数量结构的成本估算,流程是先估算半成品 HAL2,再估算产成品 FERT2。配置成本核算变式 F011 时,注意数量结构类型要选“带数量结构”,这样系统才会从 BOM 和工艺路线中展开物料和工时的用量。
执行 CK11N 时,输入物料、工厂、成本核算变式和成本核算版本。系统会按 BOM 展开组件,按工艺路线展开工序,用物料价格评估材料成本、用作业计划价格评估作业成本。原材料 ROH2 的价格来源是物料主数据的标准价格,作业价格来源是 KSPI 计算出的计划价格。如果原材料没有标准价格,CK11N 会提示价格缺失。
两个物料的估算完成后,用 CK24 先“标记”再“发布”。标记表示该成本已经估算但不生效,发布才会把成本更新到物料主数据的标准价格字段中。CK24 发布后,用 MM03 查看物料主数据的会计视图,可以看到标准价格已经改变。
6.2 验证策略:三种对比法把配置问题逼出来
方法一:估算成本与订单计划成本对比。在 CO01 创建一张生产订单,系统根据 BOM 和工艺路线自动计算计划成本。对同样的物料和数量,订单计划成本应等于 CK11N 估算结果,如果偏差超过一定范围,说明成本核算变式引用不一致。
方法二:估算成本与实际结算成本对比。跑完一个完整月结后,对比订单结算到物料上的差异金额。差异主要来自价格差异和数量差异,如果差异异常大,优先检查物料价格控制方式(S 价还是 V 价)和作业价格是否重估。
方法三:物料价格发布回写检查。检查 CK24 发布后的物料价格是否存在异常。正常情况是原材料和半成品价格阶梯式增加,产成品价格最高;如果出现半成品价格低于原材料,说明 BOM 层级或成本核算变式有问题。
这套验证流程是我在每次配置完成后都会强制做一遍的。从 CK11N 估一遍半成品,再估一遍产成品,CK24 标记并发布,然后 CO01 建个订单跑到 KO88 结算闭环。每个环节的偏差都对应一个具体的配置点,比等到月结时报表不平再排查高效得多。希望这篇实战笔记能帮你把 SAP CO 生产订单控制的链路完整走通,少踩几个配置坑。
本文还有配套的精品资源,点击获取