实施SAP HCM薪资系统,咨询顾问需要做出一个决断,即是否启用SAP薪资回算功能?对SAP HCM的薪资回算功能,有人喜欢,有人害怕,有人痛恨,有人则爱恨交加。从国内实际项目实施的情况来说,有一部分客户选择关闭工资回算功能,我称之为“拒绝回算型”;也有一部分客户选择启用工资回算功能。这有咨询顾问的意见的影响因素,也可以客户自己选择的因素。
SAP薪资标准工资回算功能很强大,但也很复杂。启用回算可以带来很多便利,减少用户的手工计算和核对工作量。例如:当用户对工资历史月份的工资主数据做调整,系统自动计算补发/补扣;当社保基数确定后,需要回溯生效,系统会自动计算基数调整引发的回溯补缴/退缴;对月中发薪的情况,如果使用员工当月的考勤数据,自动对上月发薪日以后的考勤数据计算补发/补扣。
工资回算的复杂性体现在:被回算的月份在工资计算结果中存在几条记录,读取工资计算结果的时候需要考虑是取哪一条记录;工资计算结果表RT中出现/551、/553和/552 等回算工资项,需要了解其意义;每月计算工资的时候对一个人可能同时计算若干个期间的工资;如果有回算,工资过账也变得复杂,已经过账期间的凭证已经生成,回算月份需要冲销和重新过账。
SAP工资回算有提供两套解决方案。一套如国际和中国Schema的方案,通过DT中的/551从回算期间带入差值到当前期间, 一套是香港Schema的方案,使用RETO和RETI表带出/带入回算工资项的差额。实际上,中国的薪资核算Schema CN28 来说 ,其中包含了两套回算机制,一套是用于回算以前月份的工资,将差值通过DT表带到当前月份,计算应发和实发工资;另一套是中国本地化薪资核算中实现的,用于将个税计算基数的差值通过RT/ORT/LRT表带到当前月份,累计到当前月用于计算薪资个税。
对于启用薪资回算的情形,也分为两种情况,一种是不加控制的回算,也就是系统可以回算到两年前、三年前或者更早,我称之为“疯狂回算型“;另一种是使用有限期间的回算,我称之为“限制回算型“,也就是限制系统只能回算到前三个月、六个月或者十二个月等,这是我推荐的做法,可以减少回算的复杂性。员工的最早回算日期可以在工资范围的控制记录中维护进行控制,也可以在IT0003中维护个人最早回算日期进行控制,如果员工数量比较多,可用使用程序(RPUTRBK0)批量修改IT0003的个人最早回算日期。
1、回算与新旧算法的切换
如果客户是从2018年12月或者是从201901启用新税制的算法,但客户启用了回算功能,我们需要在Schema 中作判断,在新税制切换月以前使用老算法,切换月之后启用新算法。
000190 IF ZTX1 201901个税新税制调整
000200 COPY ZNN9 新税制算法
000210 ELSE
000220 COPY ZNNG Net pay calculation China
000230 ENDIF
其中, Rule ZTX1 用于判断该客户从201812启用新税制。
000010 D CMPER JJ18
000020 < SCOND=F IF
000030 = D CMPER MM12
000040 = < SCOND=F IF
000050 = = SCOND=T IF
000060 = > ERROR
000070 > SCOND=T IF
建议是将员工的最早回算日期设置为2018年12月01日 或者2019年01月01日,如果能这样做,Schema里就不需要做这样的判断,直接写新税制算法,但测试的时候要注意数据的衔接,也要考虑上年的补发/补扣要如何处理的问题。
2、 /A41 和/Z41:借用SAP中国的回算工资项目
/A41、/A42 和/Z41、/Z42这两个工资项目是SAP中国用以回算时应纳税收入从以前月份带到当前月份计算的个人所得税的时间的主要工资项目,它们来源本次计算工资结果的/441、/442和上次计算的工资结果中/441、/442的差值。回算月份是/A41、/A42,以累加值的形式存放在RT表中,带到当前月份转换为/Z41 、Z42。可以利用它实现自己实现的新税制计算方案。需要注意以下几点:
1)只有在新税年的第一期间才需要将上月的/A41 累加到新税年的累积应纳税所得额;
2)在同一个税年内发生回算,只要在发生纳税法人主体变化时间才需要将以前月份的/A41 累加到下一个纳税法人单位的累积应纳税所得额;
3)当前月份的RT表中/103 并不包括/Z41 ,需要的时候可以使用/103 + /Z41 统计当前月的应纳税所得额,也可以用/Z41 调整RT中/103,但注意不能再同一税年累计回算时或者没有没有发生纳税法人主体变化时不能增加CRT中按税年累计的/103。
3、/551 与/552 :借用国际标准回算工资项目
工资回算差值通过DT表中的/551带入当前工资期间,转变为/552,加入实发工资./560中。在回算月中在RT表中体现为/551 和/553,/551是最新/560结果和最老/560结果的差值,/553是最新/560结果和上一次工资计算/560结果的差值,但RT中/551和/553的符号有点特别,负数是补发,正数是补扣。DT表记录的/551 则不同,一是记录条数含义,DT表中可以有多条记录,回算几个期间就有几个/551记录。这里每条记录的工资项是/551,金额存放每个回算月份的本次应补发额,,即使补发补扣金额是0也有一条记录;二是负号是补扣,正号是补发。在当前月份使用函数PDT把/551转入到/552中,最后加入当前月的实发/560中。
/551 和/552 在特定的条件下,也可以用于自己实现的新税制计算方案解决税基的流入和累计计算问题,基本逻辑等同于/A41 和/Z41 。前提是/551 中应包含全部应纳税收入,而且只包含应纳税收入。
000010 BLOCK BEG 最后工资发放结果 国际
000020 COM 输入上一次结果
000030 IMPRT L 在输入后打印ORT
000040 PORT X006 P06 NOAB 相关数据转移到 LRT
000050 PORT Z06A GEN NOAB
000060 SETCU
000070 IF O
000080 PLRT Z00A GEN NOAB 非居民回算调整-1
000090 ELSE
000100 PDT Z00B GEN NOAB 回算期间处理DT /551
000110 PRINT NP VAR
000120 ENDIF
000130 BLOCK END
其中规则
1)Z06A
000010 D WGTYP?
000020 ****
000030 /551 ADDWTL*
2)Z00A
000010 D WGTYP?
000020 ****
000030 /551 ZERO=&RETRADDWT&RETR
2)Z00B
000010 D CMPER JJ18 "
000020 <
000030 = D CMPER MM12
000040 = <
000050 = = D WGTYP?
000060 = = ****
000070 = = /551 ADDWTX/103ADDWT&RETR
000080 = > ERROR
000090 > Z GCY Z00C
3)子规则 Z00C
000010 D CMPER MM12 "
000020 * D _CHHD=CAS2
000030 * N D WGTYP?
000040 * N ****
000050 * N /551 ADDWT&RETR
000060 * Y D WGTYP?
000070 * Y ****
000080 * Y /551 ADDWTX/103ADDWT&RETR
000090 = D WGTYP?
000100 = ****
000110 = /551 ADDWTX/103ADDWT&RETR
变量&RETR用于调整非居民纳税人的当月应税收入。
后记:
2019年新税制改革,截至2019年6月,我做了十家SAP ERP HCM客户的薪资系统调整。工资回算、年度工资累计计税、员工在公司内调动引发的纳税法人主体变化三个问题纠缠在一起,可以说是剪不断理还乱,我现在也是是爱恨交加。这个问题纠缠我半年,现在总算理出眉目,整理成此文