Skip to Content

Understanding Retroactive Accounting

I. Purpose

     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:

PY_2month_Arrear no display.png

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.

II. 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.

     Tabel IT.png

     After calling X041, Amount of /560 is accumulated:

     Tabel IT_2.png

     So salary in Jan-2012 already moved to current period Feb-2012. It’s the way Retroactive Accounting INTERNATIONAL run in Payroll schema.

III. Clear Retroactive Accounting

     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)

     WT 1002.png

  • 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.

IV. Retroactive Accounting with period already executed in Payroll


    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.

Best Regards!


You must be Logged on to comment or reply to a post.
      • Dear Sir,

        Thanks for given good document , accordingly we have created new wage type and created pcr for newly join staff and it is working the same.

        Our issue is that we  have created following pcr for arrears, i.e. in our organization yearly increment is due on 1st April-12 but the same is not declared and it will be declared during the month of July or Aug which effective from 1st April, so we will copy of IT 8 and updated the

        revised pay scale , so system will show separately arrears details in pay slip for that we have created following PCR,

        If we assigned both the PCR in the schema than system are calculating arrears duble. for example.

        Old basis is Rs 12445 and revised basic is 15,445 which is declared in the month of Aug ,

        We have copy of old basic and updated revised basic with effect from 1st April in Info type 008, which check the payroll result system are showing details are under.

        Arrears Rs 12,000.00 as per following PCR ( 15445-12445= 3000 for four month )

        arrears Rs 61,780.00 as per retroactive pcr ( 15445 * 4 month )

        Our arrears PCR are as under.

        1- ZN42 Formation of differences, transfer
                WGTYP?     Query wage type

                     ELIMI *    Elim.time period ID
                     SUBWTD101A DT   Difference tab.

        2- ZN43 Store the differences in DT (India)
                WGTYP?     Query wage type

                  ELIMI  *   Elim.time period ID
                  ADDWTD101A DT   Difference tab.

        3- ZN44 Read balances carried forward
                WGTYP?     Query wage type

                  ELIMI *    Elim.time period ID
                 ADDWTI101Z IT   Input table

        So pl suggest the same. if you require more details i will update the same



        • Thanks Vijay!

          Thanks to your question, I found that I missed 1 step. I already corrected and after that Arrears show exactly. Could you please carefully check where did you insert your schema?

          I will map your PCRs with mine as below:

          ZN42 -> ZW09

          ZN43 -> ZW10

          ZN44 -> ZW11

          Btw check your Payslip configuration, to be sure that Wage type list in Arrears is correct 😀

          Hope it helps!



      • Hi thank you for your wonderful post, i have done the same thing, but still i am not able to get the retro for my custom wage types, can you please help me...pleaseeeeee. I am doing it fro qatar payroll.



        Ragini Dsouza

    • Hi Vib!

      Standard process as below:

      1. Time running, after that posting Time Result into Payroll schema through Time Wage Type.

      2. Payroll running: process and assign values into Wage type.

      3. Wage type is assigned with Symbolic Account ( + or - )

      4. Symbolic Account is assigned with GL.

      5. Running standard posting to FI, values in Wage types will be transferred to accounting GLs.

      Hope you are clear!



  • Hello Mr. Woody,

    Your Document is great for understanding the retro concept but i have some doubts as i was trying the above logic.

    My Doubt is in Third Case (X042) where salary is increased to 500 from the month of Feb and in  the month of March he is getting paid as Basic Arrears 500.

    In your scenario you have taken X042 but as i am using Indian Schema IN00 there X042 is not there instead of that IN42 is there, so when i am going through the PCR IN42 i am unable to find any of the wage type which are there in X042 like /551, /560 etc.

    I tried your PCR by using PCR IN42 but an error is showing in X070 PCR.

    So can you please help me in third case from Indian Schema perceptive.

    Thanks & Regards


    • Hi Vijay!

      You are configuring wrong in V_512W_D for some wage types. PCR X070 to be sure table IT is EMPTY. But your case some thing wrong with configuration. Please using Payroll log and find the corresponding wage type <just check input of PCR X070 in payroll log only) (assuming it's wage type 2000 and wage type basic salary 1000 not here -> so wt 2000 wrong, 1000 correct, please change configure wt 2000 as wt 1000). Please using payroll log to verify first my friend 😉 and using T-code PDSY or F1 key to investigate documents, you will be control your schema soon 😀

      @Priya and Venkatesh: thanks, very happy both you are very clear and no question about this topic 😀



  • Hai Sir,

    Thanks for your wonderful document it means lot to us. Sir i need your expertise suggestion in the issue relating to retro, in the current month payroll we faced two different issues with retro calculation. One is with our changing any master data for 20 employees we got retro and we are not able to find reason why retro is coming, can you suggest how we can find why retro happening and how we can control retro apart checking info type 3.

    And second problem is One employee is completely inactive in the current payroll, so his pf contribution for the current payroll is zero and he is having some attendance corrections in the last month for this reason retro is simulated and for the same pf need to calculate on the retro and need to display in his current month payslip but it is not happening. can you please suggest why it is exactly happening like this and how can we make it display.

    Once again thank you very for your wonder full material.

    Thanks & Kind Regards,


    • Hi Raghu!

      About your 1st concern, please Understanding Infotype to understand when you change master date in the past, Payroll will be retroactive. after that using Standard report

      S_AHR_61016380 - Logged Changes in Infotype Data  to find which data impacted retroactive period 🙂

      2nd concern: I didn't get you. What's your payroll schema? Please check schema carefully and run in display log mode and find where pension fund generated. After that verify the input and output as well. If it's standard function, plz using F1 key or T-code PDSY to have more documents. Hope you can resolve it soon 😉



  • Hi Woody,

    This document is really very good!!!

    I tried the same thing but here is the issue what I am facing.

    I have hired an employee on 1st of January 2013 and ran live payroll. On 1st of February 2013 I have increased employee basic salary to 5000/- and ran payroll I got January month arrears in February which is okay. Now when I run March month salary for the employee system is running payroll from January, February and March which is incorrect. When I changed Basic salary of employee on February month I can see the Earliest Master Data date is 1st of January 2013 which is okay. In March month system should not run 3 months, it should run for the month of March.

    Please let me know what is the thing I missed.

    Thanks & Regards,


        • Maybe when running payroll, you putted data in Forced retro.accounting as of field on selection screen from Jan, it's the reason why Payroll retroactive from that period that you inputted.

          Anw plz check document below to know which Infotype will effect the date to run payroll (update the filed in IT3 automatically, you can use T-code PU03 to update manually):

          Understanding Infotype

          and after that using program to find which infotype has been changed and impact the date to run payroll in Mar:

          S_AHR_61016380 - Logged Changes in Infotype Data



          • Hi woody,,

            The way you explain each & every thing is so good.

            i follow your steps and did the things..

            But my problem is : the amount of arrear wage type are adding into /101 total Gross Amount..

            Due to this in Pay slip amount is not coming perfect..PAY ROLL RESULT.pngPAY SLIP ISSUE.png

            Plse suggest for same..

            A part from this:: your information in the document is fully understandable..



          • Hi Sharma,

            You have to understand Payroll Schema structure. Open payroll schema an investigate.(pressing F1 key or using T-code PDSY).

            In standard schema X000, accumulation into /101, /110, etc, in pcr

            PIT   X023 P20  NOAB   Gross input and storage

            through configuration on processing class 20 and Cumulation Class in V_512W_D.

            For user your wage type generated after X023 so of course it's not included into /101. Very logically right?

            You have to clear Payroll Schema structure. Hope you can control it soon.

            Btw if you are input deduction wt from Infotype, you can input negative value: now I see it 2000, you can key in as -2000.

            If you want to key in 2000 and deduct, you have to configure in view V_T511 as Deduction WT.



    • Thanks Christoper 😀

      Hi Priyra,

      I noticed that your payslip configuration may not be correct. I can see the total in column earning did not match with detail inside.

      Kindly note that I have 2 wage types (1002 and 1003) for wage type 1000 to carry the difference. I guess you did some thing in schema wrongly or not fully clear my document, may I request you to check my document carefully again.

      There are few options on Payslip as well, kindly change and test accordingly, you might choose the wrong mode 😀

      Hope you can control it soon.


  • 1st rule its working fine


    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:


    Sample example tried

    2nd rule Iam trying same scenario Same rule was applied as stated above  Couldn't able to figure out where it went wrong please help me out




    For the month of Jan Employee salary is 10000  Executed Live run

    Changed Basic Pay Infotype from 01.01.2014 and increased 5000 Executed pay slip for Jan and Feb Month Salary Below is the screenshot of Feb

    Jan Month Takehome showing 15000 salary

    Feb Month Takehome pay showing 20000 Total of Earning is showing 5000 Completely confused on this please help me out The take home pay should be 25000 and Total of earning should be 25000  There is difference of 5000 that is not showing anywhere


    • /
      • Kindly close pcr X042. I saw your customized prc ZW09 already included the content of X042. Let's try again and let me know. Thanks.

        For testing purpose, please test with only 1 wage type only (e.g. wt 1000) and input "simple" number,  for instance: May-15: wt 1000 = $500. (live run already).

        in Jun-15: increase backdated wt 1000 from $500 to $600 from May-15

        => expected out in Jun-15: $600 and area from May-15 is $100.

        Net pay wt /559 = $700.

    • Thanks AJ.

      Hi Priya,

      My document is to guide for international py schema version only. INXX you are talking about I guess it is for India version.

      I believe the logic in your schema is illogical somewhere. You might run payroll in display log mode to find which part of schema changing your initial value ($1000) down to ($500) and fix it. In the normal scenario that ee work FULL month without any unpaid leave with month salary is $1000 => the expected output should be $1000.

      If you are using time schema, you must run time eval before executing PY.

      Good luck.

      Hope you can find it soon. You schema has been customized a lot so the best way to solve it reading log payroll to find where the issue comes.

  • Hi,

    I am facing another issue. In payslip, gross is added with the arrears again. which means if Pay 22000 (Earlier it was 21000) and arrears is 10000

    So total Gross should be 23000, but it is showing 24000 in Payslip. Somehow it is adding 10000 Rs to Gross. Pls help

      • Hi Arka,

        As Sankarsan said you should check carefully how you set up your payslip. Nothing to do with Payroll Schema as your issue is NOT related to Payroll Schema.

        Best Regards,


    • Adding to RT (ADDWTE *) is not the same as adding to OT or IT (ADDWT *).

      When a pcr processes IT (with PIT function), the IT is moved to OT.  Then the PIT loops through the w/t' entries, processes the operations in the PCR and at the end the entries in OT are moved to IT.  When the pcr finishes processing for a w/t, if there was a ADDWT *, an entry or row is created for the header w/t (or the w/t for which the PCR is processing).

      If the PCR did not have a ADDWT * or if it went through a ADDWT xxxx, then the header w/t is not created or it is eliminated from the OT  the w/t that If the w/t is already existing.

      With PRT function, the PCR increases the hrs/amt in RT entries or it creates new entries.

      Hence if you need to increase/reduce in RT, you need to add the difference only to RT. One way is to set the hrs/amt to zero in RT, then add to RT.  The following op's can be used in a PCR.



      ADDNA *

      see my post in 2008 in the link

      Updating an RT table entry in SAP HR Payroll -- without the ADDWTE option

  • Hi Woody,

    Could you please let me know what are the Processing and cumulations classes need to maintain, i have done the all the steps but arrears amount not adding to current month cross (/101).


    Sai Krishna

    • Hi Krishna,

      You might need to double check to understand how Payroll schema work.

      The difference will be automatically carried forward to next month by SANTAND SAP solution.

      => Your schema is not correct as you removed / added incorrect logic in standard schema already.

      => Or missing master data, such as IT9

      you might check and find a lot discussion in SCN to resolve your issue.

      The document is to help how to show the difference in payslip for individual wage types. It is NOT to change the STANDARD SAP logic.

      Hope you can find where you miss already, otherwise please raise a query in SCN. Thanks.



      • Hi Woody,

        Thanks for the reply, i will check and get back to you.

        I have shown the difference in individual wage types, but system is not adding to the /101 wage type diff amount.

        Thanks & Regards,

        Sai Krishna

  • Dear Woody,

    I have done everything as per your document. It is working fine but the arrears amount showing with previous month baisc+Basic arrears.  Whereas Basic arrears should show only 80.Please guide to rectify the same below screen shot for you ref.


        • Retro Issue

          To Address Retro issue I have written following PCRs and copied XRR0 TO ZRR0 and done all the changes.

          But the issues after amending all the pcrs and schema’s retro is coming wrongly. I hired one employee on 01.01.2016 and put basic pay as 670 and ran the payroll. In Feb 2016 I changed the Jan basic pay as 750. In the cluster basic arrears showing as 830 but it should show arrears as 80. Where I am making mistake please assist to resolve below this issue.

          YW09 PCR form differences

          yw09 PCR for Form Differences.png

          YW10 Stores difference in DT

          YW10 STORES DIFF IN DT.png

          YW11 Read Balance carry forward


          ZRR0 Screen Shot 1


          ZRRO SCREEN SHOT 2


          Retro Wage Types

          Retro Wage types.png

          Pay results Cluster


          Please help  where i am wrong.

  • Hi, Woody.

    I'm try to check if net pay in current period is less than 0 then display an error,

    (In case the adjust amount is negative from retro period)

    so, I have transfer /551 from DT table to IT table that has the netpay (/110) and /550

    then create the rule by check /550 then;

    AMT+  /110

    AMT+  /551 <-- this line seem does not work in this rule


         * ADDWT *

         < ERROR


    note* (/550 = -1000, /110 = 1200, /551 = -500)

    do you have any idea where i'm wrong.

    Thank you,

  • Hi Woody ,

    I am working as a SAP HCM functional tester and interested in learning configuration . I am not able to figure out from where I should start in payroll. It would be a great help if you provide some guidance.


  • Hi Woody,
    I have a situation - I run weekly payrolls. Now my current pay period in (say) 15th. And there was a retro change during 10th pay period. Now when I run the payroll for current pay period (Which is 15th pay period), though the run is going fine but I see that there are 6 pay stubs being generated (for pay periods: 10th, 11th, 12th, 13th, 14th and 15th). which is incorrect. How can I reflect all the calculations on the current pay stub (that is of 15th period)?

    Please guide as soon as possible.



  • Very helpful document. However, my client wants to determine the breakup of arrears. For example, total $500 amount was displayed in arrears, for which $300 was from basic pay, $100 was from overtime amount and consider $100 from Provident Fund. How can I determine the breakup automatically?