Complacency is the enemy of study
学习的敌人是自己的满足。
年终奖盲区 !!!
年终奖个税优惠政策延续到2027年
这个政策延续到2027年,那么年终奖的盲区就会继续出现,所以合理发放对打工人来说真是真金白金落入口袋,SAP在很早的时候就开发一个标准报表HCNCTXY0,就是判断年终奖是否在盲区区间,减少发年终奖,反而到手更多,但是这个标准报表有一点小问题,就是对元比较准确,但是到分的时候,有些区间是有问题的,比如t7cn30表中维护的 如下,就会存在一种特殊情况
,员工如果年终奖是36000.01,此报表不会帮员工计算出跨税档,还是按照3%的计算个税,但是SAP标准核算的年终奖个税会按照10%计算个税,同样SAP的产品有两个不同的结果。
所以从上面两个图看,两个计算税的逻辑是有差异的,经过对这个预测报表的逻辑查看,发现他的算法有问题,所以就只有自己改造。
首先我们看看这个标准报表的大致逻辑
我们的代码只要替换23行与48行的代码
23行替换代码如下:主要是自己弄一个配置表zt7cn30
form calc_blind_zone.
data: lv_numerator type p decimals 9,
lv_denominator type p decimals 9,
lv_txclb type n,
lv_months type i.
select * from zt7cn30
into corresponding fields of table gt_blindzone2
where txgrp = gc_txgrp
and endda >= gv_tab_endda
and begda <= gv_tab_endda.
loop at gt_blindzone2 into gs_blindzone.
gs_blindzone-endda = gs_blindzone-endda.
gs_blindzone-begda = gs_blindzone-begda.
gs_blindzone-txinc = gs_blindzone-txinc.
gs_blindzone-txpct = gs_blindzone-txpct .
gs_blindzone-months = '12'.
gs_blindzone-bintvl = gs_blindzone-bintvl.
gs_blindzone-eintvl = gs_blindzone-eintvl.
gs_blindzone-txpct = gs_blindzone-txpct.
gs_blindzone-txacc = gs_blindzone-txacc.
append gs_blindzone to gt_blindzone.
clear: gs_blindzone,gs_blindzone2,lv_txclb,lv_numerator,lv_denominator.
endloop.
* Display Blind Zone as 12 Months
clear gs_blindzone.
loop at gt_blindzone into gs_blindzone where months = 12.
append gs_blindzone to gt_blindzone3.
clear gs_blindzone.
endloop.
endform. " CALC_BLIND_ZONE
把盲区的配置数据在此处设置好,所以也不需要有单独的算法计算,引用网上已经列举好的逻辑。第二个要调整就是check_blind_zone,原来是SAP计算出来的盲区值,现在我根据配置表的数据读出来。
然后执行调整后的报表,看到数据已经跳转到下面的含建议年终奖金和税的员工页签。
这里没有贴出所有的程序,是因为我是复制标准的程序,只是修改calc_blind_zone与check_blind_zone里面的程序,注意,此标准程序还有一个问题,就是如果年终奖有负数的时候,系统不是扣减反而是增加,可以参考下如下修改。