There are many times that SAP payroll functionals have to deal with changes in the schema logic which are valid only for a specific time, these kind of changes are tricky because neither schemes nor rules have the classic “begda-endda” that helps functionals to play with retroactivity. However, you still can emulate this “begda-endda” by using constants and rules.
Let’s suppose that you have two sub-schemes: Z001 which contains the old logic, and Z002 which contains the new logic that should be effective from 09/22/2011 onwards. To be able to have these two sub-schemes in the main scheme and call the corresponding one depending the date you should proceed this way:
1) Create a new constant in view V_T511K, it has to have the value 1 in the period where the old logic is valid, and space in the period where the new logic is valid:
2) Create a new rule, it has to query the constant, and return true if the value is 1, otherwise the return is false:
3) Modify your scheme; add an IF – ELSE condition with the rule of step (2). Place the old logic under the “IF” and the new logic under the “ELSE”
4) Test your changes:
For any period before 09/21/2011 the old logic is executed (i.e. the IF branch):
For any period after 09/21/2011 the new logic is executed (i.e. the ELSE branch):
This solution using a rule with a constant is flexible in the way that you can add more conditions into it, if you, for example, have to apply this control for some personnel areas you could add this condition in the rule. On the other hand, if you have to apply the change for all the employees, then you could take advantage of subapplications, which provide an even easier solution since you should not have to create a new rule, here are the steps:
1) Create a new subapplication, go to view V_T596A and create it, you can add information if needed. The last 4 columns are not relevant for this.
2) Give the time period to the subapplication, the interval should be the same as the period when the old subscheme should be used. Go to view V_T596D and create it:
3) Place this subapplication in the IF that selects which subscheme to use, you have to use “APPL” as second parameter, ahd the third must be the subapplication
4) Test the changes: