Learn how to automate the calculation of tuition reimbursements within SAP Payroll using wage types and schema rules called during the payroll run. Using payroll wage types, constant values, and payroll personnel calculation rules, you can customize this functionality with percentages and plan maximums. Learn how to differentiate between employees in the logic so that different employee groups behave differently based on the company’s requirements. Step through an example scenario that walks you through the process of automating the tuition-reimbursement process.
Key Concept
SAP Payroll wage types – These payroll wage types store the attributes such as taxation, retro-activity, and proration, as well as the total amount to be paid to the employee. SAP Payroll constant table – This is a standard SAP table that can be called in SAP Payroll processing to make decisions within payroll rules. SAP Payroll schema rules – These Personnel Calculation Rules (PCRs) in the SAP Payroll schema build the logic of processing in order to decide what wage types should be paid out to the employee and in what amount.
By creating and implementing an automatic tuition reimbursement within SAP Payroll, you gain a tremendous amount of flexibility in how you can pay the tuition reimbursement to your employees so that is it automatically calculated and paid out within SAP Payroll. This automated process also ensures data accuracy because manual calculations are taken out of the process.
Note
If you do not implement this functionality, then your payroll department
would have to manually enter two separate amounts for anything over
this limit and do manual calculations in order to determine the amount
for each, which results in greater chances for errors to be entered.
Although this article focuses on an implementation in the US, the
fundamental logic is applicable globally.
For example, if your company policy is to pay 75 percent of a tuition reimbursement amount to one group of employees and 100 percent to another group of employees, then the current process likely involves your payroll staff manually calculating the amounts and entering them into the SAP system to be paid out during the payroll run via additional payments on infotype 15. This type of process opens you up to errors such as someone accidentally entering a 100 percent amount for someone who should only get 75 percent or vice versa. (These amount differences are company-specific and can be predicated on seniority, the hourly or salaried status of employees, if an employee is an executive or non-executive, or anything else depending on the organization’s requirements.)
Implementing this functionality also ensures that you are following the IRS regulatory guidelines by automatically withholding taxes for amounts greater than the maximum threshold. As of the date of this article (February 2015) that amount is set to $5,250. Per the IRS regulations, “If your employer pays more than $5,250 in educational assistance benefits for you during the year, you must generally pay tax on the amount over $5,250. Your employer should include in your wages (Form W-2, box 1) the amount that you must include in income.
To illustrate this functionality, I am using a company with an SAP US Payroll system that wants to automate its tuition reimbursement process. In this case, the organization has a requirement that the maximum tuition reimbursement eligible amount is $6,000, 75 percent of which the employees are eligible to receive as reimbursement. In this scenario I include an exception group to this rule. This exception group is eligible for 100 percent of the tuition reimbursement, with the same maximum of $6,000, based on the employees’ position within the company (e.g., salaried versus hourly or executive versus non-executive, for example). In accordance with current IRS regulations (as of March 2015) the amount over $5,250 paid to this group of employees is taxable, and this calculation and payout is also automatically handled by the system.
Create New Tuition Reimbursement Wage Types
The first step for implementing this functionality is to create the new wage types that are used to store the amounts of the tuition reimbursement, if you do not have ones that are already being used.
Note
The cleaner approach is to create new wage types instead of changing the
way existing ones work, but some organizations may want to keep the
tuition reimbursement paid-out history (e.g., lifetime, annual,
quarterly, or monthly) within the same wage types that were historically
used. If that is the case and you want to use the same wage types, the
SAP best practice is that you delimit the attributes of the existing
wage types with the effective date of the go-live.
In almost all scenarios that involve the creation of new wage types, you would want to copy from existing wage types (either SAP-delivered wage types or company-specific wage types). These are basic steps and should be familiar, but I’ll cover them briefly here. (If you don’t need a refresher, skip this section and start reading at the “Create New Constants to be Called during SAP Payroll Calculation” section.)
First, you need to identify the wage types from which you want to copy. I have found in my experience with table T512 that SAP provides two wage types for tuition reimbursement: M300 and M301 (shown in Figure 1). One of the key attributes for the taxation of the wage types is processing class 71. The standard SAP wage types have an R for tuition reimbursement set in this processing class to determine the appropriate taxation.

Figure 1
Standard SAP tuition reimbursement wage types and processing class 71
Once you’ve determined which wage types you want to copy from, log on to the SAP ERP HCM system and execute transaction code PU30 (Figure 2). Select the Copy radio button, then the green checkmark icon, and the screen prompts you to enter the Country name.

Figure 2
Create new wage types
In the screen that opens (Figure 3) enter the original wage types that are to be copied (M300 and M301in this case) in the rows on the left, enter the new custom wage types you want to create (1300 and 1301) in the rows on the right, and rename the long text of the wage types to differentiate it from the originals. Then select the rows for the wage types to be copied, untick the Test run check box, and click the Copy wage type 1 button.

Figure 3
Copy the wage types and customize them
A screen like the one shown in Figure 4 opens. It contains no errors and shows all the table entries that were copied over to the new wage types.

Figure 4
Output of copied wage types
Now you have created the new custom wage types that can be used for tuition reimbursement.
Create New Constants to be Called During SAP Payroll Calculation
Next you need to create constants in the standard SAP table T511K to be checked against during the payroll run in order to determine the amount that should be created automatically. Execute transaction code SM30. In the screen that opens (Figure 5) enter table V_T511K and click the Maintain button.

Figure 5
Create constant values in table V_T511K
This opens the screen in Figure 6 where you click the New Entries button. At the bottom of the screen enter the appropriate values in the Constant column (e.g., the custom/customer namespace [Z*]) and give an appropriate description, start date, end date, and value. It is an SAP best practice to always use constant values rather than hard coding them in the payroll schema. This ensures that you have the flexibility to change this logic as of a certain date using the delimit functionality.

Figure 6
Enter the new constant values
The values created in the table are for the following
- ZTUI1 – Maximum nontaxable tuition reimbursement for wage type 1300
- ZTUI2 – Maximum tuition reimbursement overall for amount over ZTUI1
- ZTUI3 – The percentage of reimbursement for Group 1
- ZTUI4 – The percentage of reimbursement for Group 2
With this step, you have created the constant values that you use in your payroll rule logic.
Create a New Payroll Schema Rule to Automate Calculation
Now that you have the wage types and the constants configured, you need to put it all together and build the logic to be processed during the payroll run. This logic is built in the payroll schema via a personnel calculation rule (PCR). Execute transaction code PE02 (Figure 7) and in the screen that opens, click the Create button to create a new payroll schema PCR.

Figure 7
Create a new payroll schema rule
This opens the screen in Figure 8, where you give the rule a description (Imran Tuition Reimbursement Logic in this example), enter the Program class (C for Payroll), and make the Country grouping 10 (for USA). The other fields are filled by default.

Figure 8
Add the description, Program class, and Country grouping for the new payroll schema rule
Click the save icon to save your changes and you’re returned to the same screen as shown in Figure 7. Select the Source text radio button and click the Change button (the other fields are filled by default). In the screen that opens (Figure 9) enter an asterisk (*) in the ES grouping field and the wage type (created above in Figure 3—1301 in my example) in the Wage/time type field. Press Enter to make this logic apply only to the wage type you created earlier (e.g., 1301).

Figure 9
Create the specific logic for wage type 1301
This opens the Edit Rule screen (not shown) where you can write your logic.
The logic to accomplish the requirements for this example are as follows (the entries are shown in the screen in Figure 10):
- A certain group of the hourly population (Employee Group U1 in this case) has a special logic so that these employees receive 100 percent of their tuition reimbursed for a year, up to a maximum of $6,000.
- This means if an employee has a tuition amount of $6,000, they would get the entire amount—$6,000—with $5,250 being paid out in wage type 1301 and $750 paid out via wage type 1300. This latter amount is counted towards the employee’s taxes for that calendar year, per IRS guidelines.
- All the other employee groupings (** in Figure 10) are only eligible to be reimbursed for up to $5,250, but they only receive 75 percent of their actual tuition reimbursed for a calendar year.
- This means that if an employee in this group has a tuition amount of $7,000, he or she receives $5,250 (75 percent of $7,000) which is nontaxable and paid out via wage type 1301.

Figure 10
PCR with logic
Keep in mind that writing any schema logic does require an in-depth understanding of the SAP Payroll schema and payroll concepts. Here are explanations of the statements within the rule in Figure 10:
- OUTWPPERSB: This is a decision operation on the employee sub-group and determines if it is U1 or anything else (**). If you want to make a decision on a different field in infotype 1, please see the other variables available under operation OUTWP via the F1 help on this variable.
- AMT*KZTUI3 or AMT*KZTUI4: This takes what is in the AMT field and multiplies it by the constant values in ZTUI3 or ZTUI4 that were created earlier.
- ADDWT&ISTV: Creates a temporary variable ISTV that saves the AMT field value at the current time being processed so that it can be referenced later if necessary.
- AMT+CY1301 or AMT+CY1300: Takes the value in the AMT field and adds the Y (Annual) value, that is stored in the CRT cluster table, from the previous payroll results for the respective wage types, 1300 or 1301. This pulls in values for the previous payroll runs within the calendar year.
- AMT-KTZUI1 or AMT-KTZU2: This takes what is in the AMT field and subtracts the constant values (either ZTUI1 or ZTUI2) that were created earlier.
- AMT?0: This looks at what is in the AMT field to determine if it is greater than or equal to (*) or if it is less than (<) 0.
- ZERO= A: This clears the value in the AMT field. (It is a best practice to clear the variable before processing in case someone may have used this variable earlier in processing and it already has a value.)
- AMT+& ISTV: This adds the variable ISTV (that you created earlier in the processing), to the current value in the AMT field.
- ADDWT 1301 or ADDWT 1300: This transfers the wage type 1300 or 1301 to the OT table to tell the system that you want this wage type created in SAP payroll with the current values in the AMT field.
- AMT*-1: This multiplies the value in the AMT field by negative 1 (to make it a positive value).
- AMT?KZTUI1 or AMT?KZTUI2: This compares the value in the AMT field to the constant values ZTUI1 or ZTUI2 that were created earlier.
- AMT=KZTUI1 or AMT=KZTUI2: This sets the AMT field equal to the constant values ZTUI1 or ZTUI2 that were created earlier.
- AMT-CY1300 or AMT-CY1301: This takes the value in the AMT field and subtracts the Y (Annual) value that is stored in the CRT cluster table from the previous payroll results for these respective wage types. This pulls in values for the previous payroll runs within the calendar year.
- NEXTR A: This is to continue processing the schema on the next line denoted by an A. It is used when you need to write more logic than fits on the one line.
The processing of this logic automatically uses the values in the constant table to do the calculations, and then creates the appropriate wage types (1300 or 1301) in the correct scenario.
As I mentioned previously, it is very important that you use values in the constant table T511K instead of hard coding values in the PCR. This gives you the flexibility to change these values as of a certain date. This is important in the future if your business rules change or if (or rather, when) the IRS changes its rules.
Insert the New Schema Rule Into the Payroll Schema
The final piece of configuration for this functionality is to insert the newly created schema rule (ZTUI) into the payroll schema. It is important to always make sure that you are placing the rules in the correct place in the schema or sub-schema for processing so that they behave correctly.
Execute transaction code PE01 (Figure 11) and enter the appropriate sub-schema that processes Additional Payments from infotype 15 (this is function P0015). The standard SAP sub-schema for this is UAP0, although most companies have a client-specific sub-schema (ZAP0 in my example). You need to determine which one is used in your own client system based on navigating the payroll schema used in processing.

Figure 11
Insert rule ZTUI into sub-schema ZAP0
Once you have the information, insert the rule (ZTUI) into the sub-schema (ZAPO) so that it is called during the payroll run. Use function PIT to tell the system to process the IT table. Put the ZTUI rule in the Par1 field. Leave the Par2 field blank so that it only calls the wage types explicitly called out in the rule (in this case, only 1301) and does not process any other wage types. In the Par3 field, enter NOAB to tell the system not to worry about the employee group from T503 and to process it for every group. After entering this logic, click the save icon
to save your changes.
Test the New Functionality
Now that you have implemented this new functionality, you need to test to make sure it works properly. Execute transaction code PA30 (Figure 12), and enter the personnel number for the test associate (85000 in this example), 15 in the Infotype field, and click the create icon
to create a new entry.

Figure 12
PA30 screen with infotype 15 entered
Based on the employee sub-group in infotype 1, this test employee is part of the special U1 grouping that qualifies for 100 percent of the tuition reimbursement, up to $6,000.
In the screen that opens (Figure 13), enter the appropriate Wage Type, Amount, and Date of origin for payroll processing and save your changes. In this example, enter $7,000 as the Amount, which is over the defined limit as well as above the IRS guideline for non-taxable tuition reimbursement. This is to illustrate how the system automatically pays the correct amount regardless of the amount entered, based on the employee’s tuition reimbursement eligibility from his or her employee sub-group.

Figure 13
The new infotype 15 entry
Once you save your changes, execute transaction code PUOC_10 to open the US payroll off-cycle workbench in order to run the next payroll period for this associate (Figure 14). You want to ensure that the infotype 15 entry is within the date range of the next payroll period so that the entry is picked up by payroll. Once you get to the main screen (Figure 14) enter the personnel number, select the reason (Regular period ‘on demand’), enter the payment date, and click the Start Payroll button.

Figure 14
Make the required entries in the US payroll off-cycle workbench
Once it runs, in the screen that opens, click the eyeglass icon
to display the schema log (Figure 15). Here you can see the details of the run and look at the logic of the schema rule. Navigate to the rule (ZTUI) in the schema as shown in the figure.

Figure 15
The payroll schema processing log
Double-click the ZTUI rule to see the processing of the rule (Figure 16).

Figure 16
Custom schema rule processing
As you can see in Figure 16, even though you originally entered $7,000 to be paid out as an additional payment, the rule logic made it so that the final values in each of the wage types is $5,250 (for non-taxable tuition reimbursement in wage type 1301) and $750 (for the taxable tuition reimbursement in wage type 1300). Therefore, the company is still compliant with IRS guidelines even though the company has elected to pay more than the $5,250 limit for non-taxable tuition reimbursement.
Finally, to view the remuneration statement, click the Form button
(not shown) to see the total amounts for the tuition reimbursements (Figure 17).

Figure 17
Remuneration statement output
By following these steps, you have set up an automated tuition reimbursement plan within SAP Payroll.
With this, and the implementation of any new functionality, it is highly recommended to do a thorough testing of this tuition reimbursement including retroactive calculations, negative amounts, and other scenarios that may occur in your production environment. In addition to this, you should also test your common payroll scenarios to make sure that there is no unintended impact elsewhere by implementing this change.

Imran Sajid
Imran Sajid is a Senior Education Consultant at SAP based in the Atlanta, GA, area. At SAP, he focuses on teaching classes in the HCM area within both SAP and SuccessFactors. Previously, Imran was a consultant who implemented and provided post-go-live support for more than a dozen different client systems spanning many industries, including manufacturing, automotive, retail, information systems, the public sector, and energy. He is the author of the book entitled, The Payroll Control Center for SAP ERP HCM and SAP SuccessFactors, as well as a frequent contributor to SAP Experts, where he has published almost a dozen articles. Imran is also frequent blogger on SAP Community Network (SCN). He graduated from the Georgia State University Robinson College of Business with a degree in Computer Information Systems. Imran can be found on Twitter @ImranSajidSAP.
You may contact the author at Imran.Sajid@sap.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.