SAP CO中成本中心费用处理的基本流程为:
①平时/期末FI/HR/MM/SD过帐->
②费用的分配分摊(Tcode:KSV5/KSU5)->
③成本中心实际费用分割(Tcode:KSS2)->
④实际作业价格计算(Tcode:KSII)->
⑤按实际作业价格重估工单(Tcode:MFN1/CON2等),
在集中服务器中运行了处于不同地区的多个公司的业务,这些步骤如果没有细化到成本中心/成本中心组的权限,就可能发生失误的越权业务处理。简单分析一下权限控制,CO很多前期交易数据是从FI/HR/MM/SD集成而来,这些模块通常可以从公司代码级控制权限,基本可以满足权限控制的一般要求,而CO中大部分Tcode的权限控制的组织架构只粗放到控制范围,显然基本的PFCG满足不了权限控制的基本要求。
(1).分配分摊(Tcode:KSV5/KSU5)的跨公司代码权限控制
SAPLKAL1:分配: 循环维护中权限检查(无效)
SAPMKAL1:分配: 循环维护中权限检查(包括分摊)
SAPMKGA2:分摊:执行循环授权检查(分配分摊执行权限检查增强出口)
(2).KSS2/KSII权限控制失效
II.CO月结的事务码都可选择”测试运行”,用户应保持良好习惯,事先测试运行一下,如果选择了其它公司代码的成本中心组,运行结果一看就能知道。
III.应用个人参数设置(Tcode:SU3/SU01)
KSG:成本中心组
GJR:会计年度
K70 :屏幕选择参数ID,其中:
S:表示选择”成本中心组”
A:表示选择”所有成本中心”
假设SU3将用户个人相关参数ID设置为:GJR 2009; KSG 8233100000;K70为S,则KSS2/KSII时将自动选择到”成本中心组”选项,成本中心默认值为8233100000。
注:个人参数ID仅仅是提供相关变量的默认值,参数ID值总是保留最后一次的值(Set Parameter ID Value),假设用户最近查看成本中心费用S_ALR_87013611使用的成本中心组为8233100010,则下次运行KSS2/KSII时系统自动从个人缓存中获取成本中心组8233100010(Get Parameter ID Value), 而不再是SU3中设置的默认KSG 8233100000,个人缓存的生命周期为本次登录到退出系统, 退出系统内存释放, 如果下次在登进,成本中心组又将默认使用SU3中的用户个人参数ID值。
使用个人参数ID的方法虽不能完全杜绝用户的失误,一定程度上可减少失误。
(3).重估工单和工单结算权限控制。
在后续工单重估计CON2、在制品计算KKAO和订单结算CO88都有相应的专门权限控制出口,如SMOD:COCCA002可以对CON2/CO88进行授权控制。
为什么在用户对应角色中增加K_CCA无效?
可以为用户对应的角色人工增加授权对象K_CCA,它就真的有效吗?如下图:
为什么权限控制无效呢?首先,SAP Tcode不过是相关程序的捷径,通常权限控制不过是在子程序中插入一段或多段权限检查程序而已, 人工增加授权对象生效, 一般还需要相应的权限控制增强出口中去调用这些授权对象才能使之生效。
More……
su21:定义/检查权限对象
sm30:V_TBRG_CO为权限对象定义授权组
角色包含了若干权限对象,在透明表AGR_1250中有存储二者之间的关系;
权限对象包含了若干权限字段、允许的操作和允许的值,在透明表AGR_1251中体现了ROLE/Object/Field/Value之间的关系;
有一特殊权限对象叫“S_TCODE”, 用来包含了若干事务码,该权限对象的权限字段叫“TCD”,该字段允许的值(Field Value)存放的就是事务代码;
既然SAP提供了类似成本中心组/利润中心的东西,并可将一公司代码下的二级单位使用利润中心处理。