Payroll is one of the most important parts in SAP HCM module. In order to control Payroll Schema and Payroll processes easier, in this document Retroactive Accounting INTERNATIONAL will be explained carefully. Moreover I will give you how to make clear payslip.
Now I will give you a typical example. I hired employee on 10-Jan-2012 with 1000$ monthly. If everything is normally, he had been run payroll in Jan-2012 and his salary as picture below:
However as some reasons, he had not been processed payroll in Jan yet. He's only run payroll in Feb-2012. So SAP will automatically run Payroll for this guy from Jan-2012 until Feb-2012 (2 periods). (Why does SAP know Jan-2012 should be the first period running Payroll? It's just simply basing on field Earliest MD change in Infotype 0003). After running Payroll, his salary will be accumulated as picture below:
As you can see in the picture, in Feb he only has 1000, but total is 1703,703 (including both Jan and Feb). Yes, SAP automatically brings his salary on Jan-2012 into current period Feb-2012. It's called Retroactive Accounting.
How SAP can bring employee's salary from past periods to current period? It's a sub-schema: XRRO Retroactive accounting INTERNATIONAL in Standard Schema X000.
In original payroll (in our example it's Feb-2012), PCR X041 will be called.
In retro period, (I only focus on typical case), PCR X043 will be executed (in our example it's Jan-2012).
There are 2 important wage type you have to take note here. wage type /560 Payment Amount and /551 Retrocalc.difference
After running Payroll, /560 will store how much salary employee has in every period. Next, sub-schema XRR0 will be started.
- In retro period (Jan-2012), value in /560 will be stored into Different Table by command:
1 record in DT for /551 will be created: For Payroll Period: 01, For Payroll Year: 2012
- In original period (Feb-2012), value from DT (wage type /551) will be transferred into /560
Before calling X041, in Table IT, Amount of /560 is only 1000.
After calling X041, Amount of /560 is accumulated:
So salary in Jan-2012 already moved to current period Feb-2012. It's the way Retroactive Accounting INTERNATIONAL run in Payroll schema.
Thanks to sub-schema XRR0, Retroactive Accounting works smoothly. However, as you can see in payslip, only total salary's (Jan-2012 and Feb-2012) shown. If customer requests detail information displayed: they want to know all kind of salaries (in retro period) will be directly inputted on payslip instead of only total as currently, sub-schema XRR0 has to be modified.
In my example I only demonstrate basic salary - wage type 1000. 2 more wage types are mandatory.
- Wage Type 1002 Basic C/F (Basic Carry Forward)
- Wage Type 1003 Basic Arrears
After that, Creating new PCR ZW10 to store value of Wage Type 1000 into Wage Type 1002 in Different Table (DT):
And PCR ZW11 to read balances carried forward (differences): NOTE: ZW11 contains logic of PCR X041:
As you can see, purpose of PCR ZW10 is: using to store value in DT so it's will be inserted after PCR X043. Logic of PCR ZW11 is: transferring data from DT into Result Table, it's the reason why it's will be putted after X041. Please look picture below to know how I modified standard sub-schema XRR0.
Accomplishing modify your sub-schema as above, now employee's payslip will be very clear: Look at payslip, employee can see how many salaries he got in Jan-2012. It's very convenient.
In my example, only wage type basic salary 1000. In your system, if there are more any more kind of wages, simply insert more into 2PCR ZW10 and ZW11 above.
Please keep look at another example, same employee in part III, I run actually payroll in Feb-2012. However in Mar-2012, employee was increased his salary from Feb-2012: (+500) so new salary is 1500. And run payroll, of-course his payroll will be retro from Feb-2012 until Mar-2012:
Net pay in Mar-2012 is correct: 2000 (1500 in Mar and +500 in Feb). However Arrears are wrong .
Because I missed 1 important part, PCR X042 in XRR0 schema:
- In retro period (Feb-2012), before calling X043 (explained in Part II), X042 is executed with function Port. It brings actual Feb-2012 payroll and inserts into DT Different Table:
1 record in DT for /551 will be created : For Payroll Period: 02, For Payroll Year: 2012 (actual salary employee received in Feb-2012). After that PCR X043 will be called.
Now basing on logic of PCR X042 (because in standard PCR X042, only technical wage type such as /560 executed), I modified my schema ZRRW by adding new PCR to process other wage types:
Logic PCR ZW09 as:
After running ZW09, 1 record for wage type 1002 created in DT table, value is -1000, because in actual payroll Feb-2012 (Feb-2012 in Feb-2012) his basis salary was only 1000.
As you can see, in Mar-2013, I modified his salary + 500, so basic of Feb-2012 in current period Mar-2012 is 1500. And when executing PCR ZW10, value 1002 in Different Table is -1000 + 1500 = 500. Because I forgot re-using value of Feb-2012 in period Feb-2012, in payslip Arrears shown 1500.
Now everything's fine as picture below:
Finally 3 main steps in retroactive accounting are:
|1. Retrieve last payroll: how much employee received in last payroll |
=> correspond to PCR X042 and my example is ZW09
|2. Re-calculate this last payroll: and accumulate into DT Different Table|
=> corresponding PCR X043 and ZW10
|3. both steps above executed in Retro Period, last step in current period, bring value in DT into result table|
=> PCR X041 and ZW11
Hope now you understand Retroactive Accounting and able to apply in your payroll schema.