在SAP
的工资计算驱动程序中,有一个全局变量 CALC_CURRENCY,它决定了工资计算时所使用的货币单位,不论前台输入的工资项是什么货币,
在读取到IT表参与工资计算时读会转换成计算货币, 最后的工资计算结果表RT中的工资项目也是以计算货币存储。
那么这个计算货币的生成逻辑是什么? 换句话说,就是它是怎么决定和得出的。
1、FORM monatsabrechnung.
calc_currency = aper-waers.
"YKMALRK000853
从这里看,计算货币来自内表APER中的字段WAERS。
2、FORM rueckrechnung.
PERFORM fill-aper USING rueckrab.
"XTWALRK054423
FORM
FILL-APER负责给APER的记录赋值。
3、 PERFORM fill-aper
PERFORM modify_aper_currency TABLES
aper.
读取本次工资计算的前一条工资计算结果,如果存在,则从结构
VERSC中读取计算货币作为APER表中的waers 字段的货币值;
如果没有前一条工资计算结果,通过一下函数获得计算货币。
CALL FUNCTION 'RP_GET_CURRENCY'
EXPORTING
molga
= calcmolga
*
begda
= $aper-endda
begda
= l_date "XAIAL0K041639
IMPORTING
waers
= $aper-waers
EXCEPTIONS
molga_not_in_t001p
= 1
no_entry_found_in_table_t001 = 2
no_entry_found_in_table_t500p = 3
no_entry_found_in_table_t500c = 4
OTHERS
= 5.
计算货币首先来自T510F,
如果T510F没有配置,则取自T500C。T510F使用视图V_T510F_B
维护,是最容易被忽视的一个配置视图,按国家分组、工资等级类型、工资等级范围和用于集体工资协议的员工子组再分组等于工资货币,决定T510、T510J
等视图中默认货币单位。。
T500C表通过视图T500C 维护,
其中按国家代码维护了其工资计算的计算货币,或者说是本位币(Local
Currency),注意这里不是使用国家分组(中国为28),而是国家代码(中国为CN)。
系统通过员工的公司代码从T001(维护视图
V_T001)中读取国家代码,然后使用这个国家代码去T500C中读取计算货币。
三、工资计支付时使用的计算货币
可以在银行明细信息(IT0009)中维护子类型为主银行和其他银行的支付货币,系统根据选择的汇率自动将以计算货币表示的实发工资(/560)转换为支付货币表示的银行支付项目(/559),同时生成银行工资支付表BT中的数据。
四、汇率类型的选择和汇率的维护
汇率类型的定义、选择和汇率的维护都是在SAP
FI/CO模块配置和维护,工资计算程序直接读取和使用。