ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SAP组织架构实战:公司代码、控制范围、工厂与KSS2成本拆分

SAP组织架构实战:公司代码、控制范围、工厂与KSS2成本拆分 刚上SAP项目那阵子最怕听到的不是这个需求做不了而是公司代码、控制范围、工厂都建好了吗。我当时心想不就是建几个组织单元、点点鼠标的事结果自己动手配的时候光是把公司代码挂到控制范围下面、把工厂分配给采购组织这两步就来回折腾了一下午还差点把测试机上已有的数据搞乱。后来带新人带得多了才明白SAP系统组织架构真正的门槛从来不是怎么建而是搞懂每个单元在现实业务里代表谁、彼此之间谁引用谁、谁又决定了谁的字段。这篇文章就围绕SAP系统组织架构这条主线往下讲。我会从财务侧的公司代码、控制范围一路说到物流侧的工厂、存储地点、采购组织再到销售侧的销售组织与销售区域然后把KSS2成本拆分、Message实例、PAS、AAS、数据库实例这些经常被糊里糊涂塞进组织架构话题里的东西单独拎出来讲清楚最后用一张应收票据凭证的完整操作收尾。不管你是刚入行的SAP顾问、还是财务和供应链的关键用户读完应该都能把这张组织图在脑子里立起来而不是只记几个英文缩写。1. 把SAP组织架构翻译成人话它其实在回答四个问题1.1 一次科目都对、就是过不了账的现场先讲个我亲身碰到的场景。当时客户给了我一堆应收账款凭证要录我按模板输完客户、金额、科目点保存系统直接甩回来一句公司代码XXXX未定义或者科目XXXX在公司代码中不存在。我当时第一反应是科目不是建好了吗翻来覆去检查科目表发现科目确实在但科目表分配给公司代码这一步没做也就是这个科目虽然存在却没有扩展到我要用的那个公司代码里。这件事让我彻底理解了SAP组织架构的本质它不是一个装饰性的树状图而是一层层的归属和授权关系。你建一个成本中心得先有控制范围你要过一张凭证得先有公司代码、科目表、过账期间变式、货币。每个业务动作都会去检查一串组织单元是否配齐、是否匹配。缺任何一环系统都不会让你过账。所以SAP系统组织架构回答的是四个最朴素的问题这笔业务在法律上算谁的账公司代码、在管理上算哪个维度控制范围、成本中心、利润中心、在物理上货放在哪、谁去买工厂、存储地点、采购组织、在市场上谁卖给谁销售组织、销售区域。把这四个问题对应的单元理清整张图就通了。1.2 法律账、管理账、物流、销售四个视角共用一套骨架很多新手容易犯的错是把SAP组织架构当成一个从大到小的纯树状结构去背。它更像一张多张网叠在一起的关系图。财务视角是一张网客户端 → 公司代码 → 科目表/控制范围/业务范围。物流视角是另一张网公司代码 → 工厂 → 存储地点工厂还能挂给采购组织。销售视角又是第三张网销售组织、分销渠道、产品组拼出销售区域。这几张网不是谁包含谁而是相互引用。比如一个工厂它必须属于某个公司代码决定库存算在哪个法人账上同时又可以被分配给某个采购组织决定谁来采购。一个采购组织可以只服务一个公司代码也可以跨多个公司代码集中采购还能只对某个具体工厂负责。这种多对多的引用关系才是SAP组织架构真正复杂、也真正灵活的地方。所以我一直跟新人强调别急着背层级先把每个单元的归属关系和引用边界画出来。后面你在配销售订单、采购订单、成本拆分的时候系统报的错基本都是这张关系图里某条线断了。理解了这一点你在看SPRO里密密麻麻的配置节点时心里就有谱了。2. 财务视角的层层收口客户端、公司、公司代码、控制范围2.1 客户端其实是个隔离罩不是业务组织单元第一次听到客户端(Client)很多人会以为它是个公司或部门其实它更像同一套数据库上的平行空间。一个SAP系统只有一套数据库、一份程序代码但可以并存很多个客户端每个客户端用一个三位数字标识比如100、200、300。数据库里几乎每张业务表都带一个MANDT字段就是你登录时选的那个客户端号靠它在数据层面把不同客户端的数据隔离开。严格说客户端属于技术隔离层不属于业务组织架构但它决定了你看到的是哪一套配置和主数据。常见的划分方式是开发配置用一套、测试验证用一套、培训用一套、生产运行用一套客户端号各不相同却共用同一套ABAP程序和数据库实例。理解这一点非常关键——你在开发客户端改了配置生产客户端不会自动跟着变必须靠传输请求(Transport Request)从开发搬到测试、再搬到生产。这也是为什么很多新手第一次会碰到我明明改完了怎么没生效八成是改在了另一个客户端或者根本没建立传输请求。2.2 公司(Company)与公司代码(Company Code)法人不等于核算单位这两个词最容易被混着说但它们在SAP里是两个不同的对象。公司代码(Company Code)是外部会计里最小的、能独立出具资产负债表和利润表的核算单位一般对应一个法律实体四位字符配置入口通常在SPRO的企业结构节点下维护用OX02。它有自己的一套参数科目表、本位币、会计年度变式、字段状态变式、过账期间变式。公司(Company)则是更高一层的合并报表口径。它的用途是把一个或多个公司代码在集团报表层面归并起来主要服务于合并相关的报表需求。也就是说公司代码是记账主体公司是报表面向的归集体一个公司下面可以挂多个公司代码。这里有个我踩过的坑值得说公司代码的本位币一旦设错后面想改非常麻烦。因为所有已过账凭证都是按本位币折算存储的改本位币等于要重新处理历史数据。所以在建公司代码之前一定要先问清楚这个法人实体的记账本位币是什么别想当然地按人民币建结果发现是家境外分支。另外科目表是分配给公司代码的同一个科目表可以给多个公司代码共用但科目本身需要扩展到每个要用它的公司代码否则就是上面那个科目存在却过不了账的问题。2.3 控制范围、业务范围、段管理会计与报表口径的分界控制范围(Controlling Area)是管理会计的组织单元配置入口常见的是OKKP。它是成本中心、成本要素、内部订单、利润中心这些管理会计对象的活动边界。控制范围下面可以放一个或多个公司代码如果多个公司代码要做跨公司的成本分摊、内部结算那它们就必须待在同一个控制范围里。这一点在设计阶段想清楚非常关键因为控制范围一旦被业务数据占用后期拆分或合并都很痛。业务范围(Business Area)是一个用于跨公司代码做内部报表的维度比如按产品线、按地区出具内部经营报表它不受公司代码边界限制。不过在较新的会计准则下很多项目已经逐渐用段(Segment)来替代业务范围去做对外披露口径的分部报表。段在销售订单、采购订单、成本中心等多个对象上都能带出来是IFRS报表里比较主流的做法。我的建议是先想清楚报表口径再建对象。如果客户只是要按产品线看内部利润业务范围或者利润中心可能就够了如果是上市公司要做分部披露那段的方案更合适。最忌讳的是两种维度都建一半、口径互相打架最后对不上账。组织单元典型层级现实对应关键作用客户端 Client技术层一套隔离的配置与数据空间隔离开发/测试/生产数据公司代码 Company Code外部会计一个法人实体出资产负债表、利润表公司 Company合并报表集团下的合并归集体服务于合并报表控制范围 Controlling Area管理会计一整套成本核算体系成本中心、利润中心的活动边界业务范围 Business Area内部报表产品线/地区等内部口径跨公司代码内部报表段 Segment对外披露分部报告口径IFRS分部报表3. 物流与销售侧的组织单元工厂、存储地点、采购组织、销售区域3.1 工厂与存储地点库存到底记在谁头上工厂(Plant)是物流模块的核心组织单元生产、库存、物料计划、工厂维护都挂在它下面。工厂必须分配给一个公司代码这就决定了它的库存和物料评估是记在哪套法人账上的。一个公司代码下可以有多个工厂但反过来一个工厂只能属于一个公司代码这条线是不能交叉的。存储地点(Storage Location)是工厂下面更细的一层用来区分同一工厂内不同物理位置的库存比如原料库、成品库、退货库、在检库。它的配置入口一般对应SPRO里的定义存储地点节点。存储地点可以出现在采购收货、库存移动、盘点等场景里。实务中我见过不少客户把存储地点建得太细一个工厂几十个库位结果操作人员每次过账都要想半天选哪个反而降低效率。比较稳妥的做法是按是否需要独立核算库存来决定存储地点的颗粒度需要单独看库存的才单独建否则合并成一个通用库位即可。这里再提一个容易被忽略的点工厂和采购、销售的耦合。工厂会被分配给采购组织也会被分配给销售组织相关的装运点。所以工厂不是物流一个部门说了算的建之前要拉上采购、销售、财务一起确认否则后面加一个装运点、改一次采购组织归属都可能引发一连串的配置调整。3.2 采购组织与采购组谁有权替谁签采购单采购组织(Purchasing Organization)是负责采购谈判和签订采购合同的组织单元。它有三种常见的归属形态理解这三种形态是设计采购架构的关键第一种是公司代码相关的采购组织为某个公司代码下的所有工厂统一采购第二种是工厂相关的采购组织只对某个具体工厂负责第三种是跨公司代码的采购组织可以给多个公司代码集中采购这种多用于集团集中采购中心。采购组(Purchasing Group)则是采购组织内部更细的分工单元通常对应到具体的采购员或者采购品类。它更多是操作层面的责任归属比如这个采购组负责电子元器件采购。采购组不承担法人的账务处理主要是为了报表统计和权限划分。实操中最容易出错的地方是采购组织与工厂的分配关系。如果你想让某个采购组织能为某工厂下单就得在配置里把这个工厂分配给该采购组织否则创建采购订单时会提示采购组织未分配给工厂。我在一个项目上就遇到过客户新开了一个工厂采购能选到供应商、能填数量就是一保存就报这个错排查半天才发现是忘了做工厂到采购组织的分配。3.3 销售组织、分销渠道、产品组拼出的销售区域销售侧的架构是三合一的组合逻辑销售组织(Sales Organization)、分销渠道(Distribution Channel)、产品组(Division)。这三个的组合叫做销售区域(Sales Area)每一张销售订单都必须落在一个明确的销售区域上因为它决定了订单用哪套定价、哪个装运点、哪个开票规则。销售组织一般对应负责某个区域或某种业务销售的单元它通常会被分配给一个公司代码。一个销售组织可以带多个分销渠道比如直销、批发、电商一个销售组织也可以带多个产品组比如整机、配件。三者的组合数量就是销售区域的数量组合太多会让主数据和定价维护量剧增。我的经验是销售区域的组合要够用就好不要为了理论上的完备把所有组合都建出来。真正会被用到的组合其实不多把用不到的组合留着不建反而能减少维护人员选错的概率。另外客户主数据、物料主数据、价格条件都可能是按销售区域维护的所以销售区域的粒度直接决定了主数据的维护工作量设计时一定要和业务方一起把到底要不要按渠道差异化定价这类问题问透。4. KSS2成本拆分组织架构在管理会计里的真实咬合点4.1 KSS2到底在拆什么KSS2是SAP里成本中心实际成本拆分的事务代码通常在期末关账时执行。要理解它做什么得先看一个现实场景辅助生产车间比如动力车间、维修车间在一个期间里归集了一堆成本——电费、人工、折旧。这些成本不能直接算到某张生产订单头上因为它们服务的是整个车间群体。于是需要一个动作把这批先归集在发送成本中心上的成本按一定规则分到各个接收方接收成本中心、内部订单、生产订单、作业类型等。这个动作就是KSS2。所以KSS2输出的结果是拆分行项目把发送方成本中心上的金额按比例转到接收方。做完之后你在成本中心行项目报表(KSB1)里就能看到一批新生成的拆分行。它的核心价值是让成本归集更贴近谁消耗、谁承担的管理逻辑而不是永远堆在辅助车间里。4.2 拆分结构怎么划分成本要素、接收者、作业类型三条线KSS2的怎么划分这个问题的答案藏在**拆分结构(Splitting Structure)**里定义拆分结构用的是KSS1。拆分结构规定了按什么维度拆、按什么权重分。它大致涉及三条线第一条线是成本要素。你要先告诉系统哪些成本要素上的成本需要参与拆分。这一步通常按成本要素组来配把需要拆的成本要素归到一个组里再挂到拆分结构上。如果某个成本要素没被纳入它的金额就不会被拆走。第二条线是拆分依据(Splitting Base)也就是按什么权重分给接收者。常见的有几种按作业类型消耗量分、按统计指标分、按成本要素分。比如动力车间的电费就可以按各接收成本中心实际耗用的电量统计指标来分摊。第三条线是接收者(Receiver)明确成本要拆到哪里去。接收者可以是其他成本中心、内部订单、生产订单甚至是作业类型。这里有个关键点拆分不是随便分的它依赖发送方成本中心在数量层面有真实的消耗数据比如作业类型要有实际消耗量、统计指标要有实际值否则拆分跑出来就是零或者跑不平。维度作用常见配置位置缺失后果成本要素组圈定哪些成本参与拆分拆分结构挂接部分成本不被拆走拆分依据决定按什么权重分摊统计指标/作业类型拆分比例为0或报错接收者指定成本去向成本中心组/订单拆分无目标跑不平版本保证期间口径一致控制范围版本配置计划与实际的版本不匹配4.3 拆分跑不平时的排查链路我踩过的坑我印象最深的一次是客户在期末跑KSS2系统提示没有任何拆分结果但成本明明堆在辅助车间里。按我的排查习惯顺序是这样的第一步确认拆分结构是否分配给了对应的成本中心。拆分配置是按成本中心或成本中心组分配的如果新开的成本中心没被纳入任一组它就不会参与拆分。第二步确认成本要素是否在拆分结构里很多跑不出结果其实是成本要素压根没被圈进去。第三步检查接收方是否有实际消耗数据统计指标没有实际值、作业类型没有实际消耗量拆分权重就全是零。第四步核对版本计划和实际的版本如果配得不一致执行期间不同版本会互相看不到对方的数据。第五步看期间和会计年度是否已经打开关账顺序没走对也会导致拆分缺失。这套链路的价值在于它不是让你一个个配置去瞎点而是按数据从哪来、到哪去、权重是什么、口径对不对的逻辑往前推。我后来把这五步写进了团队的操作手册里新人上手KSS2的出错率明显下降。这里补一句心得KSS2最好在关账流程里固定好执行顺序它一般要排在成本中心费用归集之后、内部结算和差异计算之前顺序乱了后面的报表会对不上。5. Message、PAS、AAS、数据库实例别把系统实例和业务组织架构搅在一起5.1 系统实例层与业务组织层的边界网上搜SAP组织架构的时候经常会连带搜出message实例、PAS实例、AAS实例、数据库实例这些词。这里必须先把一个概念掰开这些是系统实例不是业务组织单元。它们描述的是这套系统跑在哪些机器、哪些进程上而公司代码、工厂这些描述的是业务里的组织。两者维度不同一个系统实例可以承载多个客户端的业务数据一个业务组织架构也不需要关心底层跑在几台机器上。不过它们经常被混着问是因为在系统安装和运维阶段实例确实会与客户端数据产生交集。下面几节我把这几个实例的角色说清楚避免你在做系统规划时被带偏。5.2 消息服务器的调度角色与PAS/AAS的分工在经典的ABAP栈里一套系统通常包含这么几类实例数据库实例、中央服务实例(含消息服务器和入队服务器)、一个主应用服务器(PAS)、以及若干个附加应用服务器(AAS)。消息服务器(Message Server)的核心职责是调度和通信客户端登录时先连到消息服务器由它告诉你当前哪个应用服务器负载比较轻把你引导过去同时它也让多个应用服务器之间能互相感知、共享锁和状态。主应用服务器(Primary Application ServerPAS)一般是安装时创建的第一台应用服务器它会包含完整的对话进程、后台进程、更新进程、打印进程等工作进程类型。附加应用服务器(Additional Application ServerAAS)是后来为了横向扩展算力加进来的功能上和PAS类似但系统级的中央服务还在原处。用户登录时系统会自动在PAS和AAS之间做负载均衡你甚至感觉不到自己落在了哪台机器上。运维时我常用的几个观察入口SM51看当前有哪些应用服务器在线、SM50看某个实例上的工作进程占用情况、SM04看当前登录用户分布在哪台服务器上。如果发现某台AAS的对话进程被占满就可以判断是不是需要再扩一台AAS。实例类型主要角色关键理解数据库实例运行数据库进程、存储全部业务数据所有客户端的数据都在这一个库里消息服务器负载均衡、实例间通信登录入口和调度中枢入队服务器管理锁对象保障并发操作一致性PAS 主应用服务器第一台应用服务器包含各类工作进程AAS 附加应用服务器横向扩展算力与PAS一起做负载均衡5.3 数据库实例与客户端数据的对应关系数据库实例(DB Instance)通常单独部署在一台机器上负责存储整套系统的所有业务数据。这里有个常见误解是不是每个客户端一个数据库不是。绝大多数情况下多个客户端共用同一个数据库实例靠每张表里的MANDT字段客户端号做逻辑隔离。也就是说客户端之间是逻辑隔离、物理同库。这个设计带来的直接后果是如果你在生产客户端做了一笔数据清理理论上不会影响其他客户端但要小心那些跨客户端共享的表少量配置表是不带MANDT的。另外做系统复制或者客户端复制时要清楚复制的是数据还是程序别把测试数据带到生产上。我在一次系统刷新演练里就见过有人把源系统的客户端数据整体覆盖结果把生产的一个客户端配置冲掉了。所以涉及数据库实例和客户端数据的操作务必先在非生产环境演练确认清楚MANDT层面的隔离范围。6. 收一张应收票据要穿过多少组织单元从F-33到特殊总账标识W6.1 应收票据在SAP里为什么不走普通应收账款客户欠你钱给你一张商业承兑汇票。这张汇票不能再挂在普通的应收账款科目上因为应收账款科目是客户的统御科目(reconciliation account)它的余额应该反映真实的应收款。而收到票据后债权性质发生了变化——从对客户的应收变成了持有的票据所以要转到应收票据科目上。SAP的标准做法是用**特殊总账标识(Special G/L Indicator)**来处理应收汇票的标识是W。它的巧妙之处在于你不需要改变客户主数据里的统御科目系统会针对带特殊总账标识的行项目自动去替代科目。也就是说客户主数据的统御科目还是应收账款但开票、收款时如果带了W凭证行就会记到应收票据这个替代科目上账面上看得很清楚。6.2 一张收票凭证背后的字段与组织单元要做这个业务前置配置至少包括给客户主数据激活特殊总账标识W在客户主数据的公司代码段里勾选以及配置里为W指定替代统御科目也就是应收票据科目。操作入口通常是F-33这个汇票收据事务或者在F-28收款时选择特殊总账业务。一张典型的收票凭证你会输入客户、公司代码、票据金额、票据日期、到期日、参考号。系统生成凭证后借应收票据科目带W标识、贷客户应收账款完成债权性质的转换。等票据到期兑付时再用F-26处理票据支付或者用F-28收款把带W的行项目清掉。这里要特别注意这张凭证里每一行都带着组织单元的烙印。公司代码决定了用哪套科目表、哪一个本位币、哪一个字段状态过账期间决定了它落在哪个会计期间如果票据是外币的还要看公司代码对应的汇率类型。所以收到应收票据怎么操作这个问题答案里有一半其实是组织架构的问题——公司代码没建全、替代科目没扩展、过账期间没打开都会卡在保存这一步。6.3 常见报错与组织架构字段的对照排查我在实际项目里帮人处理过不少收票凭证的报错很多表面上是操作问题根子上是组织架构或主数据没配齐。下面这张表是我总结的对照关系照着查通常几分钟就能定位。报错信息常见根因组织架构/配置排查点特殊总账标识W未对客户定义客户主数据未激活W客户主数据的公司代码段科目XXXX在公司代码中不存在替代科目未扩展该公司代码科目表到公司代码的扩展过账期间XX/YYYY未打开期间被锁定或未开过账期间变式汇率类型M未维护外币票据缺汇率汇率类型与公司代码本位币凭证类型不允许特殊总账业务凭证类型配置受限凭证类型与特殊总账标识排查的思路和之前KSS2那套是一致的先确认是数据、主数据还是配置层面的问题再顺着组织单元的引用链往下找。我个人习惯是把报错信息里的关键字比如科目号、公司代码号直接拿去SPRO里对应节点核对比盲点配置快得多。另外提醒一句修改替代科目或客户主数据后记得确认是否需要传输到生产别在开发客户端改完就以为万事大吉。7. 配置落地清单与几个容易返工的点7.1 新建组织单元的推荐顺序建组织架构最忌讳东一榔头西一棒子按依赖顺序来才能少返工。我通常建议的顺序是先建客户端和科目表再建公司代码并分配科目表、本位币、会计年度变式接着建控制范围、成本中心组与成本中心、利润中心然后走物流侧建工厂、存储地点、采购组织与采购组最后铺销售侧建销售组织、分销渠道、产品组组合出销售区域。每一层都引用上一层顺序对了配置基本不会悬空。7.2 几个我见过的返工现场返工最贵的往往不是技术而是设计阶段没把口径和边界问清楚。我见过一个客户一开始只建了一个控制范围后来集团要分拆成两个独立核算的板块结果成本中心、利润中心全挤在一个控制范围里拆分起来非常痛苦。也见过公司代码本位币设错导致所有历史凭证的折算基础都不对。还有采购组织和工厂分配漏做导致新工厂没法下单。我的经验是在动手之前先把几个法人、几套账、要不要跨公司核算、工厂和公司代码怎么对、采购是集中还是分散、销售区域按什么维度拆这几个问题拉着业务方一条条过一遍并留下书面确认。这比事后改配置省下的时间多得多。组织架构这东西看起来是技术活本质上是个把业务想清楚的过程。我个人的习惯是每建完一层组织单元就立刻用一笔最小化测试凭证或者一个测试采购订单、销售订单验证一遍通不通而不是等所有配置都建完再统一测。这样一旦哪层断了能立刻定位到具体是哪个单元没配好。踩过几次坑之后我愈发觉得SAP组织架构这件事慢就是快——前期多花两天把关系理清后期能省下两周的返工。
返回列表