A day in the life of a payroll team is full of challenges and complicated plans, some self-sacrifices, and a few heroic moments.
Payroll engineers take their responsibility very seriously as they are serving the entire organization—and delivering one of the most important (some say the most important) expectations of the employees: accurate pay. When something goes wrong, it can affect just one person or the entire company. But how the payroll team handles it will dictate whether the moment is a perfect payday or a sad mayday.
This post is about a slice of this challenging day using SAP SuccessFactors Employee Central Payroll—a micro adventure that could change things from a payday to a mayday. I will discuss the effect of a harmless field in Infotype 0003—the “Run Payroll Upto” date.
A smart payroll team automates the intake from their incentive system—a home-grown application written outside the SAP domain. This system accepts the incentive from the Compensation Manager, provides a workflow from approvals, and at the press of a button, generates a file that is ready to load into the SAP system. The file is in the format of Infotype 0015, as shown below. Note that the load program is a custom-written ABAP program that would need the help of developers.
So far, no problem. SAP loads them correctly into Infotype 0015 and the next payroll processes them. All runs well until the payment is generated for terminated employees. When the incentive payment was paid after termination, the payroll itself was not run, since SAP dutifully ignores terminated employees. The employee was not paid, and this was discovered a month later when the employee called. Luckily for the team, the employee did not file a complaint as they were able to issue a manual check straight away.
You might be thinking, why did the payroll audits not pick this up? Did they not have any procedure to ensure that payroll was run for every associate? Yes, they did. The problem, again, was that this audit excluded terminated employees, hence the fact that this employee was missed was never picked up until the employee called in.
The solution to this problem lies with Infotype 0003.
This Infotype is automatically created whenever you hire an employee in SAP. It functions as a dashboard for this person’s payroll. The “Accounted To” field tells us when the was the last payroll period processed specifically for this person. (There is a separate status available in SAP in another table that shows which was the last payroll run for everyone in the organization.) But this field shows this information specifically for this employee because there are many reasons why an employee might not have been processed in the last payroll run. One such reason is that the employee is terminated or inactive. This infotype also functions as a gatekeeper to prevent accidental processing of terminated or inactive employees. Regular payroll runs will automatically exclude employees in non-active status unless the “Run Payroll Upto” field is populated with a current or future date.
The simple solution to paying a terminated employee is to update the Run Payroll Upto date in Infotype 0003 with a current or future date. By doing this, the on-cycle payroll automatically picks up the employee and pays the incentive.
All that is required is an update to the program that loads Infotype 0015.
The logic required in this case is the following:
Run Payroll Upto Date = Date of next on cycle pay run + 1
Remember that the date of next on-cycle pay run is available in table T549Q. This table can be read by using transaction code SE16 as shown below.
While each company has its own timing for running on cycles, the payroll processing date is usually a few days after the period end date that is shown in the End Date field. The key for this table is the period parameter, the Payroll Year and Payroll Period. The Period Parameters has different values depending on the frequency of payroll, as shown below.
The date can also be derived from the check date instead of the pay period end date, which is available in a twin table called T549S, as shown here.
The payroll processing date is usually a few days before the check date, so that there is enough time for the bank to process the payment.
Note that sometimes the on cycle run may not be sufficient if the pay must be made immediately, especially in states where termination pay is legally required to be paid the same day. In these situations, a different approach for automation may be required to run an off cycle run when the incentive arrives. This requires a separate automation to run off cycles which I will cover in a future post. If the intent is to run the process through an off cycle, which is run every day, the logic above can be simplified to:
Run Payroll Upto Date = System Date + 1
The “+ 1” is to accommodate a 1-day delay in the processing of the off cycle. As stated before, the date must be current or future. Setting this date too far into the future will open the risk of unintended payment, which this field is supposed to protect.
Read more about SAP Payroll in my book SAP SuccessFactors Employee Central Payroll.