Variable Pay – Point in Time calculations
A common Variable Pay request is to perform calculations based upon employees’ salaries as of a certain date, usually the end of the year. When integrating Variable Pay with Employee Central, this seemingly innocuous request becomes somewhat complex, as normally EC stores the employees’ “actual” salaries – that is, the salary of the job reduced for those who are on FTEs less than 1. When requesting the salary as of 31 December, for example, Variable Pay would get the part-time salary for part-time people and disregard the changes of FTE that may have happened in the year prior.
This means customers really don’t want to use the end of year salary – there is still proration involved. A better way to explain the requirement is to say they want to use the end of year FTE salary and prorate for changes in FTE and bonus target. For example, consider the following case:
An employee starts the year working full-time at a salary of £3,825 a month with a 20% bonus target. On the 1st of April, their salary is increased to £3,925 a month as part of the annual salary round. On the first of August, they change their working hours from 1 FTE to 0.75 FTE, so their salary in EC is changed from £3,925 to £2,943.75. Now imagine on 1 September they are promoted (but remain on 0.75 FTE) to a new monthly salary of £3,150 and bonus target of 25%.
The customer requirement is to have the bonus be based on the salary as of 31 December. If we go from the above, that would be an annual amount of £37,800. The pay component group for the bonus target is no better – it shows the bonus target as of that date and doesn’t consider the change in bonus target, let alone the change in FTE.
The bonus basis should be calculated as:
FTE Salary as of 31 December * FTE * bonus target percentage
For each change in FTE and bonus target percentage.
This should result in an employee history of the following:
|Start||End||Actual Annual Salary||FTE Annual Salary||Bonus Target %||FTE||Basis|
For row 1, the basis is calculated as 50400 (the FTE salary as of 31 Dec) * 20% * 1 = 10800. This is duplicated for row 2. For row 3, the basis is 50400 * 20% * 0.75 = 7560. For row 4, it is 50400 * 25% * 0.75 = 9450.
The question is, how do you configure this solution in EC and Variable Pay? I thought that this was impossible without something like a back-dated pay component or the like. I could think of no way to incorporate the FTE into the basis calculation – I wanted to multiply the FTE salary by the FTE:
(FTE Salary as of 31 December * FTE) * bonus target percentage
I then remembered the associative property of multiplication and shifted my thinking to:
FTE Salary as of 31 December * (FTE * bonus target percentage)
We don’t need to multiply the salary; we can multiply the bonus target! That opened things up – all it takes is some new fields in EC and a couple business rules and the job is done.
Employee Central Configuration
Before proceeding on the details of the EC configuration, let’s revisit the Variable Pay point in time configuration options of the “Set Bonus Calculation” screen:
There are several options here, but specifically look at the first three check boxes. We have the following options:
- Salary and bonus target come from job (or comp, even though it isn’t mentioned) info
- Salary comes from a pay component group and bonus target comes from a field in job or comp info
- Basis comes from a pay component group
Of the three options, the second one is what we want and conforms most to best practices. Salary is stored in a pay component group and we get the bonus target percentage from a field. Let’s work with that.
|NOTE: I am basing the configuration of this blog on a very standard Essential Process Content (ex-Model Company) configuration. This has the following assumptions:
It is highly likely your customer configuration will vary significantly. The basic concept presented above are transferable to other configurations, but the configuration steps below are specific to the starting configuration. I am unable to help with the configuration and requirements of your customers with out an official SAP Professional Services engagement.
This means we will need a few things from EC:
- A custom field on Compensation Information to hold the “prorated” bonus target percentage
- A pay component group to hold the annualised FTE Salary
- A pay component to hold the periodic FTE Salary
- Business rules to populate the above
Custom Bonus Target Percentage
I chose to add the custom field to Compensation Information. Navigate to Manage Business Configuration:
Add a custom field with the following properties:
Of course, the label is up to you. I chose “Bonusable Target Pct” because I like to think this is the target percentage that is actually applicable, rather than the full version stored in the pay component.
If you would like, permission this field to be visible:
Under normal circumstances, it should not be editable, as it will be populated by a rule.
FTE Salary Pay Component and Pay Component Group
It is a common request that EC store the FTE Salary as well as the Actual Salary. A recent enhancement to EC added a switch to allow the FTE salary to be stored rather than the Actual, but most EC configurations still will have the Actual. Also, some configurations I have seen have added custom fields to the pay component itself to show the FTE equivalent value of the Actual value. For this method to work, FTE Salary needs to be a separate pay component.
Navigate to Manage Organisation, Pay and Job Structures and add a new Pay Component with the following:
Then, add a Pay Component Group with the following:
Permission these elements to be visible if you wish, but it is not required.
There are two business rules needed. The first populates the Pay Component FTESALARY with the value of the Actual Base Salary divided by the FTE and the second populates the custom field on Compensation Information with the value of the Bonus Target pay component multiplied by the FTE.
The first rule is this:
In this rule, I first create three variables, all pulled from the Base Salary pay component (PC 1002): the salary amount, frequency, and currency. I like using variables, but this isn’t required.
The rule then checks to see if there is already a pay component FTESALARY. If not, then it creates a new one. If there is, it simply updates it. The key part is the Divide() function – this takes the “actual” salary and divides it by the FTE, as we require.
|NOTE: I am not an EC expert. If there is a better way of doing this, please let me know. All I know is the above works…|
The second rule is the following:
This rule is simpler – if the Target Incentive Percent pay component (1111) exists (i.e., not null), then set the custom field to be the value of that pay component multiplied by the FTE, otherwise set it to 0.
Both rules are “onSave” rules – they run when there is an update to Compensation Information. Let’s attach them to that object. Navigate to Manage Business Configuration and add the rules to the object:
Time to test these. Here is the current EC record for an employee:
This employee is on 0.5 FTE. If I edit the EC record to add a pay change effective 1 Jan 2021:
Notice the addition of the Pay Component Group AnnualizedFTESalary with a value of 48500 (24250/0.5), the Pay Component FTESALARY with the same value (of course, the values would be different if the Frequency was not Annual) and the value of Bonusable Target Pct of 7.5 (15*0.5).
Variable Pay Configuration
Compared to the EC configuration, the Variable Pay configuration is much simpler. In a Variable Pay template, navigate to Plan Setup->Settings->Set Bonus Calculation. Here is how I set it up:
The only thing that is point in time fixed is the Salary, which is being pulled from the Pay Component Group AnnualizedFTESalary, which we configured above. This is multiplied by the value of Bonusable Target Pct:
FTE Salary as of 31 December * Bonusable Target Pct
Since Bonusable Target Pct is the FTE multiplied by the bonus target percentage, we can substitute to get:
FTE Salary as of 31 December * (FTE * bonus target percentage)
This is exactly what we wanted all along!
I set up an employee to have the same data as described in the introduction:
- 1 January: Salary=£3825/month, Bonus Target=20%, FTE=1.0
- 1 April: Salary=£3925/month, Bonus Target=20%, FTE=1.0
- 1 August: Salary=£2943.75/month, Bonus Target=20%, FTE=0.75
- 1 September: Salary=£3150/month, Bonus Target=25%, FTE=0.75
My EC Employee History Field Mapping is:
I then extracted the Employee History from Employee Central and got:
This matches exactly what I wrote in the introduction! Job done.
A small optimisation: there is no reason for the Salary to be there; the salary at that time doesn’t matter to the basis calculation. I then removed it and got:
Things to Consider
This Employee Central is very simple, and I am not an expert in that module. I consulted two different colleagues about the design and they agreed it would work. However, there are a few things to consider:
- The assumption here is that a change to FTE is associated with a manual change in Salary. In other words, a change in FTE alone should never happen. If the client wants changes in FTE to automatically calculate the change in Salary, the two additional pieces we added (FTE Salary pay component and the Bonusable Target Pct field) would also need to be updated.
- The initial data load is not considered. It may be that since the two rules are “onSave”, when the Compensation Information data is first loaded, the rules will populate the two new fields. However, I don’t know this for sure, so the client may need to load these with the initial data. Likewise, I don’t know how these fields would be populated by Onboarding.
- As a reminder, this is based on a simple Employee Central configuration. Your client may have significantly complex requirements for EC and thus a different EC configuration. The basic concept, however, is sound. You need two things: the Annualised FTE Salary, FTE-prorated bonus target. Work with your EC consultant to provide these in some form.
- This method will not handle all point in time calculations. One big assumption is that the end of year salary covers country changes – if part of the year was in a different currency, that will be covered by the end of year salary and currency. Also, if the end of year bonus target percentage is used then this won’t work.
Given a few custom fields in Employee Central, the process of calculating a point in time bonus basis becomes very straightforward. This solves a problem that many (me included) was impossible to overcome. I know I have implemented tedious workarounds to make the exact same effect as what I described above that have no manual administration requirements.
Please, if this method can be improved, let me know in the comments below.