简介这是面向SAP顾问及成本核算人员的配置操作指南聚焦按销售订单结算在系统中的实现重点区分无差异与有差异两种业务场景。资源包含1个doc格式文档大小约13.72MB系统性地说明生产订单结算、销售订单成本控制、结果分析及最终结算四大配置模块并完整地覆盖从物料、BOM、工艺路线、销售订单创建到按单采购、生产订单收发料、报工、发货过账和销售开票的全流程操作。与此同时针对有差异模式给出相较无差异模式的配置差异还补充了销售订单未开票、部分开票与剩余数量开票的处理方法以及涉及MM、PP、SD、FI模块的协同要点。文档结构清晰、步骤明确已有429人学习下载适合需要掌握SAP按单结算配置逻辑和操作细节的实施人员参考也适用于项目落地前的方案评审与内部培训。1. 按销售订单结算为什么这个 SAP 配置总在月结时惹麻烦做 SAP FICO 顾问的都知道按销售订单结算Valuated Sales Order Stock是项目型企业和按单生产工厂的刚需客户一张销售订单生产端从领料、报工到入库全部挂在这张订单上月末把差异一分不少地结回销售订单再随发货结转成本。听起来不复杂但月结总在“差异去哪了”这个问题上翻车——要么差异挂在库存里不动要么直接冲进了主营业务成本。这篇笔记就是拆这套配置和操作从总账科目配置、CO 结算参数文件、结算规则维护到避坑排查给的是我实际项目里调过的完整路径。适合正在做 SAP CO/FI 配置、被销售订单库存差异折磨得一筹莫展的顾问也适合想搞明白按订单结算和按期间结算差在哪的实施人员。2. 总账基础配置评估类、OBYC 科目确定和物料分类账的联动2.1 为什么必须先搞定“评估类”和“销售订单库存”标志按销售订单结算在 SAP 里并不是 CO 单方面能完成的事。它依赖一套“库存带价值、价值跟着订单走”的机制库存不是放在普通工厂库存而是放在销售订单库存Valuated Sales Order Stock里这个库存有自己的评估类走自己的总账科目差异也结回这里。所以在动 CO 配置之前先得把 FI 侧的地基打好。评估类的选择是第一步。物料主数据里看不到“评估类”三个字但你创建物料时必须给它选一个比如 7920 这类专门给销售订单库存用的评估类。SAP 里销售订单库存的评估类很多项目模板直接沿用了标准值但也有客户用的是自己复制的 Z 开头的评估类。这里我通常建议在 OMT4 里新建一个评估类专门给按订单结算的物料用不要跟普通库存物料混用一个评估类否则月末总分不清差异属于哪一批。物料主数据上也要设置“销售订单库存”的管理方式。进入 MM02在“销售工厂数据 / 一般工厂数据”视图有“销售订单库存”字段常见取值是空、1、2。1 是单独的销售订单库存但不做价值结算2 才是价值结算的销售订单库存。按销售订单结算必须设成 2同时把评估类填成刚才建好的那个。很多项目栽在第一步就是物料主数据忘了勾这个 2。2.2 OBYC 科目确定GBB-BST、PRD 这些交易码怎么填评估类只是告诉系统“这张物料该挂哪个总账科目”真正把科目落下来的地方是 OBYC。OBYC 里每个事务码对应一种业务事件按销售订单库存涉及的主要有三类BSX存货记账所有库存类业务的基础科目GBB-BST销售订单库存发货/收货的冲销科目按订单结算的业务走到这里PRD价格差异发票校验、结算产生的差异挂在这里用 OBYC 配置时先选好“评估范围 评估类”的组合再按事务码逐一填科目。我一般先填 BSX确保库存能入账再填 GBB-BST验证销售订单发货的自动科目最后填 PRD注意这里要区分差异科目不能跟普通存货价格差异共用同一个因为按订单结算的差异最终要结回销售订单如果科目混在一起KOB1 报表里会很难看。配置完 OBYC 之后最好用 MB1C 或 MIGO 做一次测试过账。我会用 MIGO 做一笔移动类型 201 的发货到销售订单库存如果系统提示“科目确定错误”先回到 OBYC 看 GBB-BST 是否配到了对应的评估类。这一步测不过后边的 CO 配置做得再漂亮都是白搭。提示OBYC 配置的评估范围要注意有没有“销售订单库存”的独立评估范围设置。有的项目启用了分工厂评估就必须逐工厂检查 OBYC 是否每个工厂都补齐了。2.3 物料分类账按订单结算的差异为什么离不开它按销售订单结算的差异如果直接进损益月末利润波动会很大客户通常不接受。要让差异先进库存再随出货结转就得激活物料分类账Material Ledger。在 ECC/S4 里用 OMX1 激活评估范围的物料分类账S4 里很多工厂默认已经激活但老项目转过来的还要检查。物料分类账激活后系统才会记录单级/多级差异销售订单库存的差异才能在 CKMLCP 月末处理中被重估和结转。注意激活的范围是“成本控制范围 评估范围”维度一个集团下面可能有多个工厂共用一套评估范围也可能工厂各自独立这直接影响 OBYC 配置的覆盖面。实际操作中我习惯把物料分类账和销售订单库存的联动理解成一句话:差异不是凭空消失而是在物料分类账里被“暂存”再通过结算规则结到销售订单。没激活 ML按订单结算就是空中楼阁。很多同事调了几天结算最后发现评估范围压根没勾物料分类账这种翻车最伤士气。3. CO 结算参数文件从 OKO7 到 KO02 的配置闭环3.1 结算参数文件是什么它在按订单结算里管哪几件事结算参数文件Settlement Profile是整个 CO 侧配置的核心它决定了一张订单能不能结算、能结到哪里、结算凭证长什么样。在 OKO7 里可以维护老项目里也有人叫它“KO34 结算控制”只是路径不同实质都一样。OKO7 的配置界面分成几个区块。第一类是结算类型常见的有 PER比例、FUL全额、LST数量、AUR累计实际成本。按销售订单结算我一般用 PER 或 FUL比例法最常用可以在结算规则里按百分比拆分接收方如果确定订单成本百分百归一张销售订单用 FUL 更省事不会出现比例加总不等于 100% 的奇怪报错。第二类是允许的接收方类型。结算接收方可以是成本中心、内部订单、资产、销售订单、获利能力段等。按销售订单结算的核心是勾选“销售订单”这一项不勾的话后边 KO02 维护结算规则时根本选不到销售订单行项目。这个坑我见过不止一次顾问配好了参数文件但是接收方类型没勾结果 KKAO 批量维护时报“结算规则不是有效的”。第三类是结算控制参数包括是否允许部分结算、结算时是否限制金额等。实际项目里我会按客户月结习惯来允许部分结算允许差额重算。这两个选项对 KO88 的灵活度影响大如果客户经常提前月结、后期又做补充结算不勾“允许部分结算”的话第二次结算会被系统拦下来。3.2 订单类型到结算参数文件的分配比想象中更重要OKO7 里定义好参数文件只是第一步还要把订单类型分配给它。分配的动作同样在 OKO7 或对应的订单类型维护界面里完成。每个 CO 订单、生产订单、内部订单都有自己的订单类型AUART比如 PP 订单常见的是 PP01内部订单是 ORC1销售订单自身在 CO 侧不作为 CO 订单对象但结算规则最终指向销售订单行项目。分配的关键是“工厂 成本控制范围 订单类型 结算参数文件”的组合。很多项目只配了成本控制范围级别的分配忽略了工厂维度结果工厂特定的订单类型结算时找不到参数文件KO88 直接报错“无结算参数文件”。实操里我习惯在测试环境先创建一个生产/内部订单直接进 KO02 的“结算规则”页签试一下能不能打开打不开九成是分配漏了。这里有个常见误用有人以为在 KO02 里维护了结算规则就等于完成了配置。其实 KO02 维护的只是这张订单当下要结给谁而 OKO7 定义的是“能不能结、能结给哪些类型”。两者缺一不可。先里后外配完参数文件再维护具体规则顺序不能反。4. 结算操作全流程KKAO 批量维护、KO88 实际结算与月结顺序4.1 KKAO 批量维护结算规则从订单组织维度批量落规则单张订单可以在 CO02 或 KO02 里维护结算规则但实际项目里销售订单成百上千一张一张开 KO02 不现实这时候用 KKAO 批量维护最顺手。选好成本控制范围、订单类型、业务范围系统会把符合条件的订单列出来你可以在列表里逐行维护“结算接收方”和“比例”。接收方是销售订单行项目格式一般类似“销售订单号 行项目号”。维护时先确定这张 CO 订单到底对应哪张销售订单的哪一行把行项目号写对。写错行号后结算时系统会找错成本对象或者干脆报“接收方未定义”。我用 KKAO 时有一个习惯批量列表里先按“结算规则存在/不存在”筛选把已有规则的订单先过滤掉避免重复维护覆盖原有比例。KKAO 里每行可以维护多个接收方比如 80% 结销售订单、20% 结成本中心这在部分发运的订单里很实用。比例和金额可以共存但没有比例的金额会被系统忽略。参数说明里有一个容易看漏的字段状态。如果订单状态是“已结算”或“已技术关闭”KKAO 里就不能再改规则了要先释放或重置状态再回过来维护。注意KKAO 批量维护时列表里的订单可能来自不同工厂确认每张订单使用的结算参数文件允许“销售订单”作为接收方。混工厂操作时最容易忽略这项导致个别订单在结算时被拦。4.2 KO88 实际结算为什么必须先跑 KSII 再结算订单当月成本归集完后接下来就是实际结算。KO88 是单张订单的实际结算事务码也支持批量调用。结算时系统按结算规则把订单的实际成本结到销售订单库存去。这句话说起来轻巧操作时却有一个顺序约定先跑 KSII 重估作业价格再做 KO88 结算。KSII 是用实际作业价格重估生产/服务订单的作业成本。如果没跑 KSII订单里的人工费、机器费还停留在计划价格水平结算出去的是“按计划价算的数据”。别小看这一步月底那几天工厂的水电费、人工分摊全靠 KSII 校准。跑完 KSII还要确认订单上没有残留的未分配差异否则 KO88 结算完 KOB1 看还是会有尾巴。KO88 界面里要填结算凭证的过账日期、期间和原因代码。过账日期我一般选在当月最后一天原因是“月结”。凭证类型默认是 SA原因代码取决于客户财务要求有些客户强制原因代码不填会报错。跑完 KO88系统会生成一张与订单对应的结算凭证可以在 FB03 里看总账也可以在 KOB1 里按订单汇总差异。结算完成后销售订单库存的库存价值已经包含了这部分差异。最后再用 CKMLCP 做物料分类账的期末处理把销售订单库存的差异结转到销售成本或者保留在库存具体看客户用的是标准成本还是移动平均价。# 按销售订单结算月结流程事务码执行顺序 KSII # 实际作业价格计算重估订单作业成本 KK87 # 实际间接费用分配视客户需要执行 KO88 # 单张订单实际结算生成结算凭证 CKMLCP # 物料分类账期末处理结转差异到库存/销售成本 KOB1 # 查询订单结算清单核对差异是否清空这段流程在操作时每跑一个事务码就要在 KOB1 里核对一次订单余额。KSII 跑完看订单目标成本是否更新KO88 跑完看订单实际成本是否归零。只有订单余额归零了结算才算真正闭环。4.3 结算失败时先看哪里凭证流和差异科目如果 KO88 结算时系统报错先别急着改订单按顺序查三处。第一看结算规则接收方是否有效SE16N 进 COBRB 表查一下这张订单的结算规则第二看 OBYC 里 PRD 差异科目是否维护很多结算凭证的借贷方差异走的就是这个科目第三看订单类型的状态技术关闭的订单不能结算。凭证流是排查的关键工具。FB03 能查总账但 CO 内部凭证要去 KK87 或 CO3I 看也可以直接用 SE16N 查 COEP 表。我的习惯是结算失败后先把 COEP 里这张订单的凭证行拉出来看是只有贷方没有借方还是借贷都有但科目错误。这样定位到具体原因是“接收方错”还是“科目错”比在配置界面里瞎翻快得多。5. 避坑实录五个让顾问夜不能寐的结算问题5.1 物料主数据没勾“销售订单库存2”发货过账直接报科目错误现象MIGO 做销售订单的发货过账时系统报“科目确定错误请维护 GBB-BST”或者过账成功但总账凭证里库存科目是空的。原因物料主数据的“销售订单库存”字段还是空系统根本不知道这张物料要进入销售订单库存自动记账时找不到对应的评估类路径。解决MM02 打开物料“销售工厂数据/一般工厂数据”视图把“销售订单库存”改成 2核对“评估类”填的是按订单结算专用评估类。改完重跑 MIGO。如果物料还没产生业务这步很容易如果已经有库存和交易就要评估一下是否会影响现有库存价值必要时先冻结过账。5.2 KKAO 批量维护时提示“找不到结算参数文件”或“结算规则无效”现象KKAO 进入后选了订单类型却拉不到订单或者拉到了订单但保存时报“结算规则无效”。原因订单类型虽然存在但 OKO7 里没有把“订单类型工厂”分配到任何结算参数文件或者参数文件里没勾选“销售订单”接收方类型。解决回到 OKO7打开分配页签补充订单类型、工厂、参数文件的组合再检查参数文件里接收方类型是否包含了“销售订单”。检查之后重新进入 KKAO刷新列表通常问题就没了。这类问题最大的迷惑点是 KKAO 里不报错保存时才报容易让人误以为是操作问题。5.3 结算完差异没进销售订单库存反而冲进了主营业务成本现象KO88 结算成功KOB1 看订单也清零了但财务说 PL 里多出一大块成本跟销售订单库存对不上。原因OBYC 里 PRD 差异科目配成了“主营业务成本-差异”或者销售订单库存的评估类没有对应的 BSX 存货科目系统默认把差异往损益类科目倒。解决查 OBYC 里 PRD 和 GBB-BST 在对应评估类下的科目。如果 PRD 配置的是损益类科目按订单结算的场景下要改成“存货-采购差异”或者“存货-结算差异”这类资产类科目。改科目之前先看这个科目有没有发生额有发生额要从财务那边做科目调整。这里是整个配置中最容易出玄学问题的地方因为总账凭证能过但报表就是不对。5.4 结算规则维护到了订单头而不是销售订单行项目现象结算规则里接收方明明是销售订单号但 KO88 结算时提示“找不到获利能力段”或“销售订单没有对应的行项目”。原因销售订单在 CO 侧的成本对象是“销售订单行项目”不是销售订单头。结算规则里填了销售订单号但行项目号留空或者填错了行号。解决KKAO 或 KO02 里把销售订单行项目补上格式是“销售订单号行项目号”。打开销售订单 VA03 查一下实际行号确认填的是有业务的明细行而不是文本行或免费赠送行。这类问题在客户把多行订单合并结算时特别容易触发。5.5 多工厂评估范围不一致ML 期未处理差异结不出去现象一张订单跨工厂发运或收货CKMLCP 跑到一半部分工厂的差异没有结转主数据里看评估范围状态是“未激活”。原因物料分类账只在部分评估范围激活另外的工厂没有激活 ML。按订单结算的主数据在 ML 未激活的工厂里照样可以建单但差异没有分类账承接月底自然结不出去。解决OMX1 里检查所有涉及工厂/评估范围是否都激活了 ML补激活之后再重新跑 CKMLCP。如果是老项目数据量大补激活前要跟 Basis 确认月结窗口时间避免跑批锁表。这个坑是典型的跨模块问题CO 配置做得再完美FI/MM 侧没跟上照样翻车。6. 落地验证技巧凭证流、COEP 表查询和月末对账清单6.1 结算完成后怎么验证差异真清干净了KO88 跑完不是结束还要验证。我的验证清单通常包含四步第一KOB1 按订单查结算清单看订单余额是否归零第二FB03 看结算凭证借贷方是否平衡差异科目是否有金额第三SE16N 查 COEP定位这张订单的凭证行确认结算金额没有悬挂在未分配差异上第四用 CKMLCP 的结算日志看销售订单库存的重估金额和数量是否一致。-- 查订单主数据SE16N 也可直接看 SELECT AUFNR, AUART, KOKRS, OBJNR FROM AUFK WHERE AUFNR 10004567; -- 查订单结算规则接收方为销售订单行 SELECT A.OBJNR, B.KOKRS, B.OBJNR AS RECEIVER, B.GESBT FROM COBRB AS B INNER JOIN AUFK AS A ON B.OBJNR A.OBJNR WHERE A.AUFNR 10004567; -- 查 CO 凭证行确认无未结差异WRTTP04 是差异行 SELECT OBJNR, WRTTP, TSL, BELNR FROM COEP WHERE OBJNR PR00000123 AND WRTTP 04;这段 SQL 在系统里可以直接用 SE16N 看结果不需要额外开发。重点看 WRTTP 为 04 的差异行如果结算完成后还有大额差异挂着说明结算规则或 KSII 重估有问题。我通常会把这套查询存成报表变式每个月结前跑一遍。6.2 月末对账检查清单按订单结算的“后悔药”怎么提前准备月结最怕做到一半发现前面错了。我的习惯是列一个固定检查表每项过完打勾再动结算检查项事务码/对象通过标志物料主数据销售订单库存MM03值2OBYC 科目确定OBYCGBB-BST/PRD 已有科目结算参数文件分配OKO7对应订单类型已分配结算规则维护KKAO/KO02接收方为销售订单行项目作业价格重估KSII订单成本已按实际价重估实际结算KO88订单余额归零差异结转CKMLCP销售订单库存差异已处理这个表看起来朴素但真能避免月结时的手忙脚乱。有一次项目上线第二个月客户财务经理半夜打电话说 PL 异常我远程进来一看就是清单里第三项没查——新工厂的订单类型没分配结算参数文件KO88 一直把差异挂在订单上看似“结算成功”实际一分钱没结出去。从那以后我每次去新项目都会强制走一遍完整检查表按订单结算这类跨模块配置尤其不能只在 CO 侧自嗨FI、MM、SD 三边都要确认过。希望这套配置路径和排查清单能帮你在月结时少踩几个坑把按销售订单结算的差异管得明明白白。配置包和操作指引我放在这份网盘资料里照着顺序复核一遍基本就能落地。本文还有配套的精品资源点击获取