(1).SAP货币类型
SAP一贯号称其产品国际普遍适用性强,适合各种会计准则和多货币记帐,在货币处理上下足了工夫, SAP预置了多种货币类型,见上图(Tcode:OMX6),常见的货币类型有:
00: 凭证货币,也叫记帐货币,SAP系统中1个凭证有且只能有1个记帐货币。
10: 公司代码货币,即本位币(第1本位币),也叫FI货币,SAP还允许设置另2个附加本位币。
30: 集团货币,通常是集团所在地国家币种(也可直接设置为如USD这样的硬通货),通常也作为控制范围货币。
A0: 财务管理范围货币,或称为预算货币。
B0: 经营范围货币,获利分析货币。
(2).公司代码货币和控制范围货币(FI货币和CO货币):
使用多数国内管理软件,通常不大会涉及货币的选择问题,举个实例,假设国内某公司(本位币为RMB,公司代码9000)同时在境外拥有2家子公司,子公司代码B设置香港(本位币为HKD,公司代码9001),子公司代码C处在美国(本位币为USD,公司代码9005),使用单机版的国内财务软件,不存在所谓的控制范围货币(CO货币),货币设置毫无悬念, SAP则从组织架构、业务处理和数据存储上就区分出财务和管理模块,对外法定报表和内部管理报表详加考虑,也迎合了大型的跨地域的集团性公司的需求。
SAP的FI和CO模块分别对应到财务会计和成本管理,组织架构上,一个控制范围(CO基本组织架构)可以包含多个公司代码(FI会计核算最小单元),组织架构上两者发生联系;FI实际过帐时,建立了初级成本要素(成本要素可理解为CO科目)的损益科目将同时自动过帐到CO模块,形成CO实际值,FI和CO业务上发生联系。当然,除此以外,CO还保存有统计、计划和预算数据。
现在,来探讨SAP控制范围货币的设置,通常的做法有2种:
单一控制范围:
一是只设置1个控制范围,控制范围货币设置为RMB,在本例中,将ABC 3个公司代码全部分配到该控制范围。
例1:
现在,公司代码9005(本位币USD)2009/01(当期汇率6.7)和2009/02(当期汇率6.6)分别发生10,000USD差旅费(67000RMB)和10,000 USD差旅费(66000RMB), 使用Tcode:S_ALR_87013611默认只能看到控制范围货币RMB金额,SAP允许用户使用货币折算,如2009/03月(当期汇率6.5)需查看2009/01-02的累计发生额,使用货币转换将控制范围货币RMB转换为USD,你只能看到的转换后的USD金额为(66000+67000)/6.5=20,461.54USD,显然这不是所要的结果,因为实际累计发生的差旅费仅为20,000USD。
*如上图,选择菜单环境->选项->一般设置下的“专家方式”,就能对CO金额进行报表显示货币转换,选择一包含整个控制范围各公司代码下的成本中心组就能看汇总的成本分析报表,当然会出现折算差异。
例1就是设置1个控制范围的一大缺点(当然这有解决方法,稍后详细介绍),简单总结1下设置1个控制范围的缺点:
(a).汇率和货币转换引起的各种问题,关于汇率,曾有这么个问题,集中在一起的公司代码A/B/C对USD/RMB的汇率同一期有不同的要求,SAP的汇率只能针对到凭证类型(OBA7定义凭证类型时已默认识使用平均汇率类型M),很难满足此类要求。
(b).成本中心计划(Tcode:KP06)默认只能使用控制范围货币RMB。
(c).作业类型(Tcode:KP26)及其他计划默认只能使用控制范围货币RMB。
(d).使用默认报表查看成本费用类报表十分不方便。
(e).关闭CO期间(Tcode:OKP1)影响其他公司,同一控制范围的集中服务器都有这个问题。
(f).CO相关权限控制方面不如分离的多个控制范围灵活。
单一控制范围的优点在于,很容易跨公司代码进行费用分摊,如在珠三角地区,属于在港注册(本位币HKD)却在内地工作的港方人员的人工成本可以分摊到产品上(生产企业在内地注册),如果存在此类业务,就不得不使用单一控制范围,简单总结单一控制范围的优点:
(a).实现同一控制范围下的跨公司代码费用分摊。
(b).虽然在单个公司代码层查看成本分析类报表不方便,但在总部(或母公司)层面查看各公司的汇总报表相对方便,无需切换控制范围,当然也存在汇率转换问题。
(c).相关增强接口比较容易控制。
多控制范围:
通常根据区域或不同本位币分别设置控制范围,从CO角度,设置的多个控制范围间很难进行业务交互,因为控制范围是成本管理的基本单位,CO的各项业务交易都是基于控制范围。对照单一控制范围,简单总结一下多控制范围的优缺点:
优点:
(a).财务本位币和成本控制范围货币完全一致,不会出现汇率转换差异问题。
(b).由于控制范围货币和本位币一致,标准的CO报表直接就可使用。
(c).分离的控制范围权限管理方便,CO期间关闭不会互相影响。
缺点:
(a).集团境外公司的不同币种越多,则建立的控制范围越多。
(b).比如存在一套财务人马处理不同公司的帐务,则需频繁切换控制范围。
(c).无法直接进行不同控制范围下的跨公司代码费用分摊。
(3).附加本位币和币种数据存储分析
单一还是多控制范围?决定这个问题前研究一下SAP的数据存储,其实很简单,只要看看如下几个表就可:
BKPF/BSEG: 会计凭证主表
BSEG-WRBTR:凭证货币金额/记帐货币金额
BSEG-DMBTR:本位币金额/法定报表金额
BSEG-DMBE2:第2本位币金额
BSEG-DNBE3:第3本位币金额
COBK/COEP:成本凭证主表
COEP-TWAER:交易货币币别
COEP-WTGBTR:交易货币金额
COEP-OWAER:对象货币(成本对象货币币别)
COEP-WOGBTR:对象货币金额
COEP-WKGBTR:成本控制范围货币金额
例2:
如上图,假设公司代码9005(本位币USD),属于控制范围9005(控制范围货币RMB),某成本中心发生两笔费用,1000USD劳务费和1000RMB咨询费,则两笔费用在CO数据(COEP表)如下存储:
1000USD:TWAER交易货币USD, OWAER对象货币USD(即成本中心货币)
WTGBTR交易货币金额1000USD,WOGBTR对象货币1000USD
WKGBTR成本控制范围货币金额 6800RMB(汇率6.8)
1000RMB:TWAER交易货币RMB, OWAER对象货币USD(即成本中心货币)
WTGBTR交易货币金额1000RMB,WOGBTR对象货币147.06USD
WKGBTR成本控制范围货币金额 1000 RMB
*对象货币意思就是成本对象的货币,通常默认就是公司代码货币,如某成本中心属于某公司代码,成本中心的对象货币就是该公司代码的本位币,同样如果某实际内部订单属于某公司代码,其对象货币也是该公司代码对应的本位币,现在,假设该内部订单做某预算,该预算被多个不同本位币的公司代码耗用,则该订单可以设置另外的对象货币,这种业务应该非常稀少,故几乎可以认为对象货币就是公司代码货币。
GLT0:旧总帐科目汇总表
TSL*:凭证币科目汇总额
HSL*:本位币科目汇总额
KSL*:集团货币科目汇总额(通常设集团货币为第1附加本位币)
FAGLFLEXT:新总帐汇总表
TSL*:凭证币科目汇总额
HSL*:本位币科目汇总额
KSL*:集团货币科目汇总额
OSL* 第四货币(附加本位币)科目汇总额
BCS报表的数据抽取:
如上图,以成本中心的实际增量数据源0CO_OM_CCA_9为例,Tcode:RSA3测试例2的抽取结果如上,COEP表的2行根据不同的货币类型变成了3行, 结果和COEP表完全一致。其中货币类型20为成本控制范围货币,还可以看到对象货币就是公司代码货币10。也就是说,BW总是可随时取到各种币别的数据,在报表项目中,我们通常将报表分公司代码层次和
总部/母公司/事业部层次,以美国的公司代码9005的招待费为例,该公司各级部门主管可能需要看到本部门各员工发生的招待费用;对公司高层,则通常只需看到各部门的招待费汇总额就可,报表货币当然为USD,对于其母公司,则通常需要公司代码9005经过外币报表折算后的RMB报表进行法定合并,成本费用类报表通常并不折腾合并,货币统一为RMB后汇总一下瞧瞧,“国内管理主要依据报表”,报表不能出具麻烦就很大,当然,如果母公司领导感兴趣,也可以下钻追溯一下9005公司层次的USD报表看看也未尚不可,最好能追溯到ERP的原始数据,这是做数据仓库的终极目标,实现很难!
*为什么Tcode:OKKP中设置30为成本控制范围货币到此成了20呢?这样理解,即使你OKKP设置10为控制范围货币实际上最终还是会换成20,20是控制范围的最终表示货币类型。
(4).单一还是多控制范围
理解了前几部分后,就可以根据实际业务决定使用单一还是多个控制范围,技术上配置很简单,OKKP在分配控制时间可选择1(控制范围和公司代码相同)和2(跨公司成本核算),如下图。
个人建议,如果境外公司不存在成本中心/作业计划、复杂的生产成本结算和跨公司费用分摊,还是使用单一控制范围为好,特别是境外的业务全部集中在一台服务器上,或者我们需要往这台集中服务器上载其他的财务系统数据,除非确实必要分开,将几个鸡蛋放在1个栏子中毕竟好照顾一点。
(5).弥补单一控制范围的缺陷
通过上面分析,从自开发报表和BW中,总是能取到实际所需货币类型的数据,再以USD公司代码9005为例,假设其归属到单一控制范围货币RMB。
(a).自开发的成本分析报表总能取成本对象货币值,9005公司代码费用分析通常只要USD,如果想折算到RMB,FI层面可看附加本位币,CO层次可看控制范围货币。
(b).BW层的公司代码报表当然也取10货币类型,到了总部层次,需要转换RMB,只需要在例程中直接乘上报表汇率就可。
复制S_ALR_87013611显示USD,如图,选择技术信息就能知道对应的报表名称,
或者,直接Tcode:GRR1建立成本中心报表,让报表显示对象货币金额就可,细节省略。
(6).SAP的购汇处理
SAP的凭证每次只能使用1个记帐货币,现在要使用美金购买欧元,如何处理?
解决方案:建立一中间银行科目(注意Tcode:FS00设置科目货币为RMB)
假设10000 USD购买6800欧元,操作如下:
a. USD转出, 凭证货币USD,假设系统中USD/RMB的平均汇率6.75。
Dr: 中间科目 10000 USD 67500RMB
Cr: USD存款 10000 USD 67500RMB
b. EURO元购入, 凭证货币EURO, SAP系统中EURO/RMB平均汇率10, 为了在本位币层
平衡中间科目,手工计算出EURO/RMB平均汇率为9.9264, 或者直接手工将RMB数改为67500元,参考分录如下:
Dr: EURO存款 6800欧元 67500RMB
Cr: 中间科目 6800欧元 67500RMB
期末外币评估业务交易时不评估中间银行科目,否则那10000USD和6800欧元根据评估汇率将总是存在汇兑差额,此特定的中间过渡科目实际上应作为表外科目。