Skip to Content
Technical Articles

Payroll PCR for Advance Payment and Automatic Reversal


In this blog I want to explain about a unique scenario, where a client wants to reverse an advance payment made in payroll which has to be recovered when the final claim was not made by the employee with in a mentioned period of time. This has to happen without any manual intervention. I wrote some PCR’s to achieve this.

Client’s Requirement:

Client wants to pay 50% of employee’s training cost as advance through off-cycle payroll. Employees who are taking such advance should complete the training within two months (this is counted including the month when the advance payment is taken). They should also claim the balance 50% amount in regular payroll cycle within two months; otherwise, the same advance has to be recovered from the employee automatically.

Solution Overview:

We can achieve this requirement by using payroll PCR’s (Personnel Calculation Rules) and few wage types. These PCR’s are placed in the Indian Payroll Sub-Schema INAP of IN00 (here I am using ZNAP which is copied in customer namespace). We also need to create a constant ZTRGA in table V_T511K for storing the month threshold value as 2. This threshold month can also be adjusted as per client requirement.

I am demonstrating this in Indian Payroll, but this can be used in any country version. I also demonstrate how we can pass the wage type value to multiple payroll periods through ORT (Old Result Table) using PCR, setting appropriate PCR split and usage of Processing Class 6 for transferring wage type to IT Table.

Schema ZNAP (copied from INAP) and the PCR’s Usage:

Transaction Code: PE01

Wage Types used in these PCR’s and required configuration:

We need following wage types (Screenshots of configuration in V_T511 are given below):

  1. 1070 – Training Advance (Payment Wage type)
  2. 1071 – Training Settlement (Payment Wage type)
  3. 1075 – Miscellaneous Payment (Payment Wage type used for testing purpose).
  4. 2070 –  Training Advance Reversal (Deduction Wage type)
  5. 5070 – Training Advance Indicator (which is used in payroll for calculation purpose. This is neither Payment nor Deduction Wage type)


The configuration of V_512W_D – processing/cumulation classes for Payment Wage types – 1070, 1071 and 1075 are given below (1071 and 1075 are also having same settings):

The configuration of V_512W_D – processing/cumulation classes  for Deduction Wage type – 2070 are given below:

The configuration of V_512W_D – processing/cumulation classes  for Intermediate Wage type – 5070 are given below (Important to note the Processing Class 6 – to be set as 1):

The payroll constant in table V_T511K is defined to store the checking value “2 months”. This will be used in PCR for processing:

We are going to use the following PCR’s to achieve this requirement:

Transaction Code: PE02

PCR ZTL1:  Used to transfer the advance indicator wage type 5070 from old result table:


This PCR will check in every Regular payroll month, whether the NUM field of wage type 5070 reached the value ZTRGA (here it is 2) and if yes, then the training advance will be reversed and added to deduction wage type 2070, otherwise the NUM will be incremented by 1 (NUM+1) and passed on further in table IT.


This PCR is used to create indicator wage type 5070 with NUM value as 1 while making the advance payment through wage type 1070. It also sets the PCR split value as 3 of the wage type 1071 which is the settlement amount.


This PCR will check the existence of wage types 5070 and settlement amount wage type 1071. This indicates that employee is correctly submitting the claim and will also remove indicator wage type 5070 from the table IT.


This PCR will check the existence of wage types deduction wage type 2070 and settlement amount wage type 1071. This indicates that employee is correctly submitting the claim and will also remove reversal wage type 2070 from the table IT.

Testing of above PCR’s in payroll schema IN00 (Sub-schema INAP copied as ZNAP):

1)  Payroll has been completed for the month April 2020. Employee is taking training advance amount Rs.10,000 on date 15.05.2020. This is entered in infotype 267 (Additional off-cycle payment) in wage type 1070.

Remuneration Statement for Training Advance – Off-cycle on 15.05.2020

Payroll Log of Schema ZNAP:

During advance payment in off-cycle payroll, PCR ZTP2 will read the advance wage type 1070 and will make a copy as wage type 5070 with NUM value as 1 which will flow further in checking process:

We made another off-cycle payment of other wage type 1075 – misc.payment. This is to test and ensure that, the advance indicator wage type 5070 will not be lost because of multiple off-cycle payroll runs:

Output of Table IT after processing ZTL1 PCR:

Now Let us run Regular monthly payroll for May’2020 for this employee 40014:

Payroll Log for PCR ZTL1:

Payroll Log of PCR ZTP3:

Table IT after processing ZTP3:

Since this employee did not submit the claim with in 2 months, his training advance is recovered in Jun’2020 payroll as given below:

The payroll log for Jun’2020 payroll:

Output of ZTP1:

I tested the above PCR’s with another employee having id- 40015 with a basic salary of Rs.60,000 and training advance of Rs.12,000 with similar months as of employee id 40014.  But this employee is submitting the claim amount of Rs.12,000 in Infotype 15 (Additional Payments) with wage type 1071 in Jun’2020 payroll. In this case, training advance will not be recovered, instead, he is paid with the training settlement amount i.e wage type 1071 is paid. I want to show only the screenshot of the PCR’s for Jun’2020 payroll, to avoid repeated content.

PCR Log of ZTP1:

Log of PCR ZTP4:

With this, I would like to end this blog. Your comments are welcome.



You must be Logged on to comment or reply to a post.