CO高手一月速成之CO-PC篇 SAP真他妈的容易宰系列
成本核算单和成本组件结构
是这样的,本人刚开始CO一周,上周花了几个小时找CO MM(不是MM module是那个MM,这个MM比那个SAPMM可爱多了)吹了吹,主要是CO的MM比较漂亮,最后就忘记了初衷是去问人家CO知识,哎, 学习SAP快一年了,经常有很多人探讨说做SAP顾问倒底需要多长时间,以俺一年的经验,如是内部顾问,只要你能吹的进,你曾做过三天的SAP就行,如是做个外部顾问,有3-6月就足够.因为我们必须记住,学人家的东西而已,从某种意义上来讲它和学五笔,office没有任何区别.
网络上我的一个死党Xuebi,据称是XX石油公司的首席FICO,他曾对我说如果我知道物料主数据那几百字段意思他就服我,我当时就将前天的饭喷了出来,实际上在学习SAP三周后大概的字段意思俺就知道了,很明显,感情中国SAP user都象此君一样学SAP,弄了几年还是主数据盲, 哎, 难怪!
其实学习SAP真的太简单了,我强调过很多次只要买把快刀开宰任何模块都经不起几个月开宰的,有人说,屠老大,不要那么嚣张,你懂SAP CRM,APO&*@吗?我是不懂,但是我敢说任何一块只要想宰只要真的有位高手肯教甚至两天就能成为这方面的高手, 非常遗憾,中国人非常保守, 我最少听过N个顾问说不要随便教别人诸如此类的话,中国传统的思想是教会徒弟挤走师傅,这就是中国技术不如人的根本原因. 说实在话,就学一破SAP其实真没啥,可是竟然有人说俺好崇拜SAP,然后我就问,你迷信吗?他说我不迷信, 我说你这和拜木偶有和区别,你崇拜SAP这样一堆死code干吗? 还不如崇拜SAP俺屠夫实际点,起码俺老人家要是一高兴还能将卖剩下的排骨送你几根熬汤喝.
吹牛到此…
开宰CO-PC很简单,就是一项项看配置再结合前台操作,小花俩三月你就成了一流高手了,另外的是多和CO MM吹吹,弟兄们还有意外收获哟, 关于成本核算单和成本部件结构请看图1.
[1] Define Origin Groups
T-code: OKZ1
Origin group通常在原材料这层用,如图2,一电子企业将原材料分成电子,五金,塑胶等group . 然后在建立物料主数据时在costEstimate 1视图中选上origin group就可.
Origin group用途:
1 用于(更细By material origin Group)分析成本估算结果,如果相关材料都没有设置origin group,cost estimate只能得到总的物料成本,如例1.
2 用于成本核算单(Costing sheet)的calculation base和Credit中.
3 在定义成本组件(OKTZ)中可根据origin group再细分成本部件.
4 计算差异和WIP能By Originan group细分.
[2] Maintain Overhead Cost Elements
Tcode:KA06
维护41(Overhead)类型的次级成本要素.
[3]Define Costing sheets
什么是costing sheets?首先看下面几个cases.
1 在实际生产过程中,除了生产成本中心(Cost Center Category F),其它相关成本中心典型的比如库房和质量控制成本中心虽然并没直接参加生产,这些成本中心间接用于生产的费用结算就通过Costing sheet来完成(毕竟这些成本中心产生的费用还有部分和生产无关,于是可通过定义一定费用百分比或一定费用数量金额结算到Prod. Order).
2 希望在做成本估算之时就能将各种生产相关的Overhead算上.一个实例是,在估算(半)成品的标准成本中希望包含有(半)成品Prod. Overhead,可能需付的产权及其外包费用(如果有这种业务)和组成其BOM各component的mat. Overhead和Labor overhead,这时就可使用costing sheet. 换句话说,使用costing sheet的目的是在标准成本估算时尽量将各层所有和生产成本相关的费用都包含进来.
传统的概念是标准成本包括料(BOM)+工(Routing,Work center,Activity)+费(Costing Sheet).
一个Costing sheet包括多costing sheet row(行),每一行包括计算基数(Base),OH Rate和Credit,
理解Costing sheet前首先理解下[4]-[8]其组成部件,在例2中将详细介绍Costing sheet组成并以一个实际的成本估算(CK11N)为例详细介绍成本估算的逻辑.
[4] Define Calculation Bases
SAP帮助这样描述,对Production Overhead Cost(生产管理费用)可根据作业类型计划价格乘上一变动或固定比率提取(公司相关作业类型如表1),对Material Overhead Cost(物料管理费用)可根据物料成本(可By Origin group细分)按一定比率提取.
表1 :
Act. Type
Short Text
Celm Desc.
CAMAOH
Assembly LAB OH(Bulk Cam)
90101001
Assy OH (BulkCam)
CAMLAB
Direct LAB Rate(Bulk Cam)
90101000
Dir Lab (BulkCam)
CAMLOH
Component Lab OH(Bulk Cam)
90101002
Com LOH BulkCam)
CAMOH
Other OH (Bulk Cam)
90101003
Other OH (BulkCam)
PAKAOH
Assembly LAB OH(Packing)
90103001
Assy OH (Silkscreen)
PAKLAB
Direct LAB Rate(Packing)
90103000
Dir Lab (Silkscreen)
PAKLOH
Component Lab OH(Packing)
90103002
Comp LOH (Silkscrn)
PAKOH
Other OH (Packing)
90103003
Other OH (Silkscrn)
SKCAOH
Assembly LAB OH(SilkScreen)
90102001
Assy OH (Packaging)
CKCLAB
Direct LAB Rate(SilkScreen)
90102000
Dir Lab (Packaging)
SKCLOH
Comp Lab OH OH(SilkScreen)
90102002
Comp LOH (Packaging)
CKCOH
Other OH (SilkScreen)
90102003
Other OH (Packaging)
如图3,公司产成品主要有三类材料(对应到3个origin group,散装相机,丝印和包装材料),单击图3的List按钮查看详细的Calculation Bases资料将如图4.图4-[2]表示计算基数ZM01-ZM03还必须是Origin group在From-to origin group范围的那些原材料成本.图3 ZQTY计算基数是采用Enhancement自定义逻辑来计算的,请看[8]
综合上表可知,ZL01-ZL03计算基数是基于作业类型分摊成本要素的,ZM01-ZM05是基于物料成本(初级成本要素)的,ZM04-ZM05对应的则是半(成品)外包成本要素,在Costing sheet中将据此提取一定百分比(或固定数量)到成本中.
[5] Define Percentage Overhead Rates
如图5,ZL01-ZL03 Percentage OH rate都是%, ZM01-ZM05是%,Percentage OH Rate名称和Calculation Base相互对应,很好理解就是将提取相关作业类型计划价格(KP26维护)的%做Prod. OH(按中方传统的成本会计概念,这些是诸如生产管理相关人员的工资),物料成本的%做Material OH.
图5-[2]Dependency表示的是存取顺序,这使我们想到了Condition设置,是的,Costing sheet也用Condition 技术,我们知道Condition Record(比如MM/SD Pricing和相关Ouotput type采用Condition技术)会保留在A开头的表中,Percentage OH rate记录D000的记录就在表A013中,
在看看T685T表,你能发现这些OH Rate的Usage也是A(Pricing),然后实际数据和MM/SD Condition,MM/SD output一样保存在表KOMP中.
[6] Define Quantity_Based Overhead Rates
如图6,OH Rate ZR01是基于数量的OH Rate,图6[1]-[3]表示ZS18的Actual OH type 是 USD),这通常对应于成品,在Costing Estimate 1视图中输入OH group(OH Key和OH Group请看[9]-[10]说明).这些值可从表A014和KOMP中得到.
[7] Define Credits
如图7,定义相对应的Credit,Credit可理解为贷方转出,因为实际OH rate费用通常在借方,在Cost allocation时要相应地从贷方转出,点击图7-[1]后得到相关配置明细,如图8[1]-[3]表示OH Rate将按Calculation Base(请看[4]定义的百分比(*)转到41类(OH Rate)的各次级成本要素和F类的成本中心52-460000上.
9020类成本要素定义如表2,这很重要,在例2中将引用到表1和表2的成本要素.
表2.
Cost Element
Short Text
Cost .
90201001
Lab % OH (BulkCam)
41
90202001
Lab % OH (Silkscrn)
41
90203001
Lab % OH (Packaging)
41
90201000
Mat % OH (BulkCam)
41
90202000
Mat % OH (Silkscrn)
41
90203000
Mat % OH (Packaging)
41
90204000
Mat % OH(SubCon WIP)
41
90204100
Mat % OH (SubCon FG)
41
90205000
Production Royalty
41
[8] Develop Enhancement
SMOD:COOM0001,SAP在计算基数,OH Rate和Credit都留下了增强,用户可根据实际需要自己定义的规则编写计算逻辑.EXIT_SAPLKASC_001(ZXKSCU01,Calculation base)|
EXIT_SAPLKASC_002(ZXKSCU02,Overhead Rate)|EXIT_SAPLKASC_003
(ZXKSCU03,Credit).
在[4]中ZROY Calculation Base是使用增强逻辑的,增强逻辑请看例4 .
[9]Define Overhead Key
如图9,定义OH key,OH Key可用于单个Order和Materaial(通常是(半)成品,和OH Group组合)的成本计算
[10]Define Overhead Group
如图10,定义OH group和OH key挂勾,图10[1]-[3]表示plant 5100的OH group ZA01对应到OH Key ZA01,而在图6中定义了OH Key的Quantity-based OH Rate就是定义了每PC产品要付多少产权费,在维护相关(半)成品时在Costing Estimate 1视图中维护OH group,这样相应的Cost estimate时就会将产权加到成本中,请看例2分析.
[11]Define Cost Component Structure
定义成本部件结构,意思就是定义Cost estimate时成本是有那几部分组成的,关于成本部件请看例5.
[12]意思是如果在成本估算时出了问题,Error Message将发送给谁,似乎很少启用.
例1 Origin group的使用
假设Raw material 511554的orgin group是P1,如图例1-1[1]
则在成本估算时(CK11N/CK40N)时,如图例1-2[4], 511554的OrGp栏有了P1,这样相关(半)成品的成本分析就可根据其部件的origin group(电子,五金,塑胶等group)将物料成本更细分.
例2 Costing sheet结构和成本估算实例
Costing Sheet也采用条件(Condition)技术,Condition技术还用在MM/SD Pricing, Output type(Print,Mail, Fax,iDoc/EDI等),Tax Calculation(IMG)等上.
[4]-[8]中对Calculation Base,Overhead Rate,Credit说明已经相当清楚,以Row30为例回顾一下,这行的意思是Base是From-To Row 10-10(就是说计算基数只包含ZM01)将按%(请参照[5] Define Percentage Overhead Rates)转到贷方ZM1(对应Cost element 90201000(表2,Bulk CamMat %OH).
现在以一个实际的标准成本估算(CK11N:ASSORT0222标准成本估算)分析来解释Costing sheet对成本估算的影响,如图例2-2, 在分析前,看下这些重要基础数据,准备好计算器.
1标准成本Cost variant的Valuation Variant 001 .
如图例2-2,在标准成本Costing variant对应的Valuation Variant 001的Overhead加上上面所设置的Costing Sheet.
2 作业计划价格和Routing.
CA03:每1000PC消耗作业PAKLAB(Allo. Cost Ele.:90103000)和PAKLOH (Alloc. Cost Ele. 90103001)195小时.
KP26: 检查Activity Type PAKAOH和PAKLAB作业计划价格,如图例2-4,PAKAOH计划价格为 USD,PAKLAB是 USD .
回到图例2-2.
Item 1:E,内部作业,ASSORT0222的Costing Lost size是100,消耗作业小时(routing是1000个195小时),合计*( = ~ .
Item 2 :E *( = ~ HKD .
Item3-Item14:各Component的成本是根据Cost variant的Valuation Variant(001)的取价策略得到的价格,001的取价策略是首先抓物料主数据价格,如果没有就抓info record .
分析Item15-Item18前,再回顾一下Costing sheet的几个component .
表3 .
Cost Element
OH Rate(参考[5])
Credit (参考图8)
Cal. Base(参考图4)
90201000
%
ZM1
ZM01(B1-B5)
90203000
%
ZM3
ZM03(P1-P1)
90203001
%
ZL3
ZL03
90205000
ZR1
ZR1(图6)
Item 15:材料900836,971535,971345和971474(Orgin group B5,在ZM01 Cal. Base定义的 origin group内)成本之和(+++)*% = .
Item 16:物料584487,584488,584489,508010,584490,584491(Origin group P1)的成本和(111+54+225+70+15+12)*% = 44/07 HKD .
Item 17:参考图4,ZL03 计算基数对应的Cost element是90103000-90103999(Packing Acitvity type的Allo. Cost element),就是将其计划作业价格*%做Labor OH .
Item 17 = (Item1+Item2)*% = (+)*% = .
Item 18:产权费用 (图6)*100/ = ~ 390 HKD
实际上,这玩的就是传统的成本会计所谓的完全成本法 .
例3
例4 ZROY Calculation Base增强
*& Program Name : ZXKSCU01
*& Title : User Exit for Qty Overhead Calculation for
*& Production Related Royalty Cost in Product Costing
*& Module Name : Controlling
TABLES: cosl, caufvd, cosla.
TYPES:
BEGIN OF ty_cosl,
lst001 LIKE cosl-lst001,
lst002 LIKE cosl-lst002,
lst003 LIKE cosl-lst003,
lst004 LIKE cosl-lst004,
lst005 LIKE cosl-lst005,
lst006 LIKE cosl-lst006,
lst007 LIKE cosl-lst007,
lst008 LIKE cosl-lst008,
lst009 LIKE cosl-lst009,
lst010 LIKE cosl-lst010,
lst011 LIKE cosl-lst011,
lst012 LIKE cosl-lst012,
lst013 LIKE cosl-lst013,
lst014 LIKE cosl-lst014,
lst015 LIKE cosl-lst015,
lst016 LIKE cosl-lst016,
END OF ty_cosl.
DATA: t_tab_cosla LIKE cosla OCCURS 0,
t_cosl TYPE ty_cosl OCCURS 0 WITH HEADER LINE,
w_cosl TYPE ty_cosl.
FIELD-SYMBOLS: <fs_actty>,
<fs_qunty>.
CONSTANTS:
c_royalty LIKE tkzu1-bkond VALUE 'ZQTY',
c_plan LIKE coss-wrttp VALUE '01',
c_actual LIKE coss-wrttp VALUE '04',
c_variance LIKE coss-wrttp VALUE '05',
c_plant_5100 LIKE coiob-werks VALUE '5100',
c_plant_5300 LIKE coiob-werks VALUE '5300',
c_meinh_pc LIKE cossa-meinh VALUE 'PC'.
DATA: l_aname(6),
l_qname(6).
DATA: abw_menge LIKE cosla-lst001,
abw_meinh LIKE cosla-meinh,
abw_poper LIKE coep-perio,
abw_gjahr LIKE coss-gjahr.
CLEAR sy-subrc.
CLEAR t_cossa.
REFRESH t_cossa.
* Only for royalty type condition
CHECK i_cbase = c_royalty.
* This logic is only for plant 5100 and plant 5300
CHECK i_coiob-werks = c_plant_5100 OR i_coiob-werks = c_plant_5300.
* For actual data, read from table COSL
IF i_wrttp = c_actual. "Actual
SELECT lst001 "Activity Quantity Period 1
lst002 "Activity Quantity Period 2
lst003 "Activity Quantity Period 3
lst004 "Activity Quantity Period 4
lst005 "Activity Quantity Period 5
lst006 "Activity Quantity Period 6
lst007 "Activity Quantity Period 7
lst008 "Activity Quantity Period 8
lst009 "Activity Quantity Period 9
lst010 "Activity Quantity Period 10
lst011 "Activity Quantity Period 11
lst012 "Activity Quantity Period 12
lst013 "Activity Quantity Period 13
lst014 "Activity Quantity Period 14
lst015 "Activity Quantity Period 15
lst016 "Activity Quantity Period 16
FROM cosl
INTO TABLE t_cosl
WHERE lednr = '00'
AND objnr = i_coiob-objnr
AND gjahr = i_yeafr
AND wrttp = c_actual.
LOOP AT t_cosl INTO w_cosl.
CONCATENATE: 'LST' i_perfr INTO l_aname,
'MEG' i_perfr INTO l_qname.
ASSIGN: COMPONENT l_aname OF STRUCTURE w_cosl TO <fs_actty>,
COMPONENT l_qname OF STRUCTURE t_cossa TO <fs_qunty>.
MOVE: i_yeafr TO t_cossa-gjahr,
<fs_actty> TO <fs_qunty>,
c_meinh_pc TO t_cossa-meinh.
APPEND t_cossa.
ENDLOOP.
ENDIF.
***********************************************************************
* *
* get data being exported into memory according to modification in *
* note 125301 for variance calculation *
* *
***********************************************************************
* In the target, for variance calculation, use memory ID
* KV02_TARGETQUANTITY’
IF i_wrttp = c_variance. "Variance calculation
IMPORT: abw_menge FROM MEMORY ID 'KV02_TARGETQUANTITY',
abw_poper FROM MEMORY ID 'KV02_TARGETQUANTITY',
abw_gjahr FROM MEMORY ID 'KV02_TARGETQUANTITY'.
CHECK NOT abw_menge IS INITIAL.
* Move fiscal year and unit of measure to t_cossa
MOVE: c_meinh_pc TO t_cossa-meinh,
abw_gjahr TO t_cossa-gjahr.
CONCATENATE: 'MEG' abw_poper INTO l_qname.
ASSIGN COMPONENT l_qname OF STRUCTURE t_cossa TO <fs_qunty>.
MOVE abw_menge TO <fs_qunty>.
APPEND t_cossa.
ENDIF.
* For planning, use memory ID ‘KKCK_CO_OBJECT_ADR’
CHECK: i_wrttp = c_plan. "Planning Run
***********************************************************************
* *
* get data being exported into memory from LKKXKF07 *
* *
* In the memory ID 'KKCK_CO_OBJECT_ADR', the primary costs are
* available in table COSPA and the secondary costs to which overhead
* is to be applied in table COSLA.
***********************************************************************
IMPORT cosla TO t_tab_cosla FROM MEMORY ID 'KKCK_CO_OBJECT_ADR'.
* another alternative to get more data *
*
* Call function 'CK_F_GET_CAUFVD' importing caufvd_exp = caufvd.
* Get the 1st record only
CLEAR: cosla.
READ TABLE t_tab_cosla INTO cosla INDEX 1.
* Move fiscal year and unit of measure to t_cossa
MOVE: c_meinh_pc TO t_cossa-meinh,
cosla-gjahr TO t_cossa-gjahr.
* Move quantity for all periods
WHILE i_perfr < 13.
CONCATENATE: 'LST' i_perfr INTO l_aname,
'MEG' i_perfr INTO l_qname.
ASSIGN: COMPONENT l_aname OF STRUCTURE cosla TO <fs_actty>,
COMPONENT l_qname OF STRUCTURE t_cossa TO <fs_qunty>.
MOVE <fs_actty> TO <fs_qunty>.
ADD 1 TO i_perfr.
ENDWHILE.
APPEND t_cossa.
例5 细说Cost component Structure和Cost Variant关系
……………………………..