excellent ref guide..thanks to stev bogner-http://www.hrexpertonline.com/article.cfm?id=1850
How Do I Use Processing Classes in SAP Payroll?
________________________________________
Explore how your Payroll system uses processing classes. Our HR expert offers helpful hints and tips and explains how to create your own processing classes.
________________________________________
Dear HR Expert,
I have worked in SAP HR Payroll/Time for a couple of years, but I still do not completely understand the concept of processing classes in wage type table T512W. Can you please explain?
— Venkata Atkuru, Systems Analyst, Metropolitan Water Reclamation District of Greater Chicago, IL
Processing classes are one of the key methods of processing wage types in SAP Payroll. Processing classes are attributes of a wage type. When payroll runs, various procedures select and process wage types based on their processing class values. In addition to standard processing classes delivered by SAP, customers can create their own for custom payroll processing — for example, a class for fringe benefits.
A wage type has 99 processing classes, though Payroll does not use every one of them for every country’s payroll. Table T52D8 shows which processing classes apply to each country. Customers can use processing classes 90 through 99 for their own purposes and the others are delivered by SAP.
Several views maintain processing classes, but V_512W_O is a good, general view that lets you work with all 99 processing classes at once. Figure 1 shows this view for wage type 0SAL, which is a US salary wage type. Processing classes with a white box beneath them are available for US payroll. The Payroll system does not use the other processing classes for US payroll processing, so they are unavailable for input. Some processing classes are blank because Payroll does not use them for this type of wage type in some cases. For example, Payroll uses processing class 72 to define whether a wage type is an employee tax or an employer tax. Since salary is neither, the screen displays no value.
Figure 1 View V_512W_O shows all processing classes
Depending on how you use a processing class, a blank value may or may not work. It depends on how SAP created and uses the processing class. In either case, the processing class documentation should explain the purpose of each value. Select the processing class with the mouse, then press the F1 key for help documentation or the F4 key for a list of possible values.
Note
Ninety-nine processing classes should be sufficient for most companies. I’ve never run out of custom processing classes. If you run out, you could use evaluation classes or create dual-use processing classes, but this is an issue very few people face.
How Does Payroll Use Processing Classes?
You can access processing classes in two ways, via payroll functions and payroll operations. A payroll function looks at certain processing classes and then processes wage types based on which value it discovers. For example, US payroll uses the RGRTE payroll function to calculate the Fair Labor Standard Act (FLSA) regular rate of pay for an employee. To perform this calculation, the RGRTE function must know which wage types contribute to the regular rate of pay and which wage types calculate that regular rate. The RGRTE function uses processing class 85 to determine which wage types apply to the different parts of the calculation, as shown in Figure 2. SAP delivers the RGRTE function and processing class 85. When customizing your Payroll system, you specify which processing class 85 values to assign to your wage types.
Figure 2 Processing class 85 values
Payroll operations can also access a wage type’s processing class values. You can use the payroll operation VWTCL in a personnel calculation rule (PCR, or “rule” for short) to retrieve the current wage type’s processing class value. A good example is SAP’s standard rule X023, shown in Figure 3. Line 000010 finds the current wage type’s value for processing class 000020 and returns it to the variable key. If the value is 1, then the system executes line 000030; if 2, then line 000040; and so on through value B. If processing class 000020 contains none of these values, then the system uses the default value *, which executes line 000020.
Figure 3 Rule X023
You can use report RPDLGA20 (transaction PC00_M99_DLGA20) to determine which wage types have a certain processing class value. It reports on the same data shown in view V_512W_O. Figure 4 displays that report’s output, using its tree display option. You can browse through the processing classes and see which wage types have processing class 20, value 4.
Figure 4 View wage types with processing class 20
Processing Classes Are Date-Effective
Of the two ways to structure payroll calculations — hard-coding wage types and using processing classes — only processing classes are date-effective. If you must change the payroll calculation logic for a given wage type, you have to make that change date effective or subsequent retrocalculations will use the new logic, resulting in calculation differences.
Processing classes are attributes of a wage type, and wage types are configured with begin and end dates (Figure 1), so processing classes are much better suited for structuring payroll calculations. The system processes new wage types copied from a working model wage type in the same way as it uses processing classes, but you need to update the rule if the wage types were hard-coded.
You can access a wage type’s processing class in payroll calculations via a payroll operation in a PCR. The VWTCL operation reads the wage type’s processing class based on the end date of the payroll period. If a wage type splits in the middle of the period, the VWTCL operation uses the end date of that split. For example, if a monthly employee’s salary increases from $2,000 to $3,000 on January 10, the Payroll system creates two salary wage types. The first wage type includes dates from January 1 through January 9, and the second from January 10 through January 31. The VWTCL operation reads the wage type as of January 9 for the $2,000 salary and January 31 for the $3,000 salary.
Payroll functions typically follow the above logic, but because they are coded in ABAP, it’s possible that the business rules for the function require that the system read the wage type with a different date, such as the check date. The function’s documentation should specify how to use the dates, but if it doesn’t, then you have to examine its ABAP code. You can access the documentation and ABAP code for functions and operations with transaction PE04.
Create Your Own Processing Classes
Most companies need to use a custom processing class. You can use the IMG shown in Figure 5 to define your own processing classes and the values they use. You can document both the processing class and each of the values online by clicking on the blue and white information icon to the left of the name. If you maintain this documentation, users see it when they press F1 in the V_512W_O view.
Figure 5 IMG path for processing classes
Define your own processing classes when you need to process a set of wage types together for a specific calculation. For example, perhaps you have to calculate a fringe benefits expense as a percentage of certain wage types in payroll, but this expense varies per group of wage types. You could define processing class 90 as “fringe benefits wage types,” and then create values for each of the wage type groups. For example, use a value of 1 for each wage type evaluated with a 1% rate, a value of 2 for all wage types with a 5% rate, as shown in Figure 6.
Figure 6 Custom processing class for fringe benefits calculation
Next, create a custom rule to process all wage types that have a processing class value 90, shown in Figure 7. For each wage type the rule uses, query its processing class value 90 in line 000010. If the value is 1, then the system executes line 000030, creating the fringe benefits expense in wage type 9BEN. For value 2, the system executes line 000040. If processing class 90 is any other value, then the system executes line 000020, which calculates nothing for wage type 9BEN. If in the future, a wage type is supposed to go from a rate of 1% to 5%, it is simply delimited with a new effective date via configuration in view V_512W_O. Then the system changes processing class 90 automatically for that new effective date.
Figure 7 Use processing class 90 in a rule
Tip!
Use report RPUCCOSE to search for specific texts in a PCR. For example, to find all rules using processing class 20, search for “*VWTCL 20*.”
Tip!
You can also use processing classes in your custom ABAP reports and payroll functions. The VWTCL operation uses a routine with form VXKLAS in the ABAP include RPCBU309_ VVKLAS. You could also use that form’s logic in your company’s custom ABAP reporting.
________________________________________
Steve Bogner is managing partner at Insight Consulting Partners and has been working with SAP HR since 1993. He has consulted for various public, private, domestic, and global companies on their SAP HR/Payroll implementations; presented at the SAP user’s group ASUG; and been featured on Sky Radio Network regarding SAP HR. You may reach Steve via email at sbogner@insightcp.com.
How Wage Type Valuation Bases Turn Payroll Numbers into Money
by Ian Moogan, Senior SAP Analyst, Avecia Ltd. Payroll,
________________________________________
Within any payroll, there will always be payments input as numbers that then need to be converted into money. The method of achieving this in R/3 is known as the "wage type valuation base." The author gives some background on valuation bases and shows how each works. He provides two examples of using valuation bases for processing, one for a charitable deduction and one for calculating the pay for five hours of overtime.
________________________________________
Within any payroll, there will always be payments input as numbers that then need to be converted into money. Examples are:
• Number of hours of overtime paid at time and a half
• Number of tickets in the company lottery
• Different levels of coverage in the company health plan
The method of achieving this within R/3 is known as the “wage type valuation base.” You can use valuation bases in a number of different ways to process rates within the payroll schema. After I give you some background on valuation bases and how they are assigned to your wage types, I’ll show you how each of these methods works. I’ll end with two examples of using valuation bases for processing, one for a charitable deduction, and one for calculating the pay for five hours of overtime.
Assigning a Valuation Base to a Wage Type
The key to the assignment of a valuation base to a wage type is table T512W. If you look at this table in transaction SM30 using view V_512W_B, you can drill down into each wage type to display the valuation bases.
As you can see in Figure 1, the Valuation Bases area is divided into three sections, Current wage type, 1st derived wage type, and 2nd derived wage type. Each section contains the following three fields:
Figure 1 Table T512W, view V_512W_B
Valuation basis: This field specifies how the system should determine what value to apply to the wage type.
StatemntWT: This field allows you to take the value you calculate when you apply the valuation base and store it in a different wage type. If you do not specify a statement wage type, the derived value is stored in the original wage type.
% rate: This field allows you to take the value derived from the number input in the wage type and the valuation basis and apply a percentage to it. For example, you could input 10 hours of overtime and apply a valuation basis that tells the system to use the employee’s hourly rate to derive the amount. However, if you specify 150 percent in the % rate field, the payroll multiplies the final amount by 1.5 to give overtime at time and a half.
Two other sections within this screen allow you to take the number in the original wage type and derive up to two more wage types. An example would be if you wished to pay a $1 bonus for every hour of overtime specified in the last example. You could use the 1st derived wage type field and specify a valuation basis that tells the system to look up a constant value. You then apply that to store the output in a second statement wage type.
Valuation Basis
The Valuation basis field can have one of the following values. (If the field has no entry specified, no valuation basis is applied to the wage type.)
• Valuation basis K: The rate to apply to the wage type is read from table T510J. You should use this valuation basis when the same rate is to be applied to all employees for this wage type. An example would be a health club subscription that has been charged at $10 since June 2000. Figure 2 shows how the entry in T510J would look.
Figure 2 Table T510J with valuation constants
The PMod. field in Figure 2 is the payroll modifier 02 (Table Constant for Wage Type Valuation), which has a default value of 01. However, you can set it in the personnel calculation rule (PCR) that sets the modifiers for payroll accounting to subdivide your employees if your processes require that. For example, in the United Kingdom, CMOD is called in subschema GT00 (Processing of Time Data: Great Britain), while in the United States, UMOD is called in subschema UM00.
• Valuation basis TS: This entry specifies that the rate for the wage type is dependent on the employee’s pay scale level and should be read from table T510. This table is keyed on the following fields: Country grouping, Pay scale type, Pay scale area, Pay scale group, Pay scale level, and Wage type.
For the value to be read from this table, all the above fields must be matched for the employee. If they do not match, no rate is derived for the wage type.
You can access table T510 via transaction SM30 with view V_T510. You are first asked to specify the Country grouping, Pay scale type, and Pay scale area (Figure 3).
Figure 3 View V_T510 to determine work area
Figure 4 shows an example of a wage type for which the valuation is dependent on the pay scale group (PS group) and level (Lv), i.e., using valuation basis TS.
• Valuation basis TG: This specifies that the rate for the wage type should be read from table T510. In this case, the system ignores the Pay scale level field when reading the table.
• Valuation basis T: Table T510 is used to find the rate to be applied. In this case, both the pay scale level and pay scale group are ignored when reading the value. Therefore, the employee’s country grouping, pay scale type, and pay scale area determine the value that is returned.
• Valuation basis nn: If this valuation basis is specified, the rate is derived from a technical wage type, /0nn. These technical wage types are used to hold rates. For example, /001 holds an employee’s hourly rate, /003 holds a daily rate, and so on.
Therefore, valuation bases K, T, TS, and TG involve value look-ups from tables, while valuation basis nn is reliant upon the values held in other technical wage types. Now I’ll show you how technical wage types derive their values within the payroll processing.
Figure 4 View V_T510 specifying valuation basis TS
Wage Type /0nn
The key to valuation basis nn is that the technical wage type, /0nn, holds the correct value for the rate to be applied to the wage type. This is calculated within your payroll schema in a three-step process:
Step 1. Calculate the employee’s basic pay.
Step 2. Divide the employee’s basic pay by time constants to calculate rates.
Step 3. Convert the numbers to money within the payroll.
Step 1. Calculate the employee’s basic pay
The employee’s total basic pay is calculated in the PCR G010 (Determine Valuation Basis) or your company’s version of it, which is called in subschema GT00 (Gross Payment).
This PCR makes a decision on processing class 01 (Assignment to Valuation Bases) for all the wage types in the internal input table (IT). The IT contains the wage types as they enter the PCR, while an internal output table (OT) or result table (RT) stores the wage types after the processing step. The IT and OT are temporary tables that exist only during the payroll run, whereas the RT is stored in the database. This processing class is delivered with the values in the SAP standard system (Figure 5).
To obtain a summary of the wage types that are assigned a particular processing class, evaluation class, cumulation class, or valuation basis, run program RPDLGA20 from transaction SE38 and drill down into the classification you require. This may be useful, for example, if you need to determine all the wage types that have Processing class: 01 set to value “1.”
Figure 6 shows the basic structure of PCR G010.
If the only wage type in the input table that has processing class 01 set to 1 is basic pay (wage type 1100), the IT for G010 appears as you see it in Figure 7.
Once the processing is complete, the OT from PCR G010 appears as shown in Figure 8, with the valuation wage types set.
Figure 5 Processing class 01 values
G010 Determine Valuation Basis (GB)
|__! 1
|__! 2
|__” 3
|__” ****
|___” VWCTL 01 Decide on Processing Class 01
|_” *
| |_ ERROR
|
|_” 0
| |__ADDWT * Transfer Wage Type to Output Table
|
|_” 1
|__ADDWT * Transfer Wage Type to Output Table
|__ELIMI Z Removes the Time Unit Splits
|__ZERO= N Set the Num Field to Zero
|__ADDWT /001 Transfer Wage Type to /001 in OT
|__ADDWT /010 Transfer Wage Type to /010 in OT
|__. . . . .
|
Figure 6 Processing within PCR G010
Figure 7 Input table to PCR G010
Figure 8 PCR G010 output table
Step 2. Divide the employee’s basic pay by time constants to calculate rates
The values stored in the valuation base technical wage types are then read in PCR G013 (Division of Valuation Bases), or your company’s version of it, which is called in subschema GT00.
This PCR also makes a decision on processing class 01 (Assignment to Valuation Bases) for all the wage types in the internal table. However, unless the wage type has a value of 5 (Division of Valuation Bases) in this processing class, the wage type is transferred to the OT unchanged. If the wage type has the processing class set to 5, the wage type is processed as shown in Figure 9.
Report RPDLGA20 shows that the wage types that have processing class 01 set to 5 are the technical valuation base wage types, /0nn.
The values that are used to determine the rates can be seen in table PARTT at the beginning of subschema GT00, which is read from the personal work schedule (table PSP). For the example employee shown in Figure 8, table PARTT would look like what you see in Figure 10.
G013 Division of Valuation Bases (GB)
|__! 1
|__! 2
|__” 3
|__” ****
|___” VWCTL 01 Decide on Processing Class 01
|_” *
| |__ADDWT * Transfer Wage Type to Output Table
|
|_” 5
|__” WGTYP? Decide on the Wage Type
|__” **** Wage Type /001 (others are hard coded)
|__RTE=TSDIVP Set the Rate to Working Hours per period
|__DIVID ARR Divide Amt by Rte and Store in Rte
|__ZERO= A Set Amt to Zero
|__ADDWT * Transfer Wage Type to OT
|__. . . . .
|
Figure 9 Processing within PCR G013
Figure 10 Table PARTT
It can be confusing relating the values from PARTT to the rates used in PCR G013. However, it may help to keep the following in mind:
Within table PARTT, any lines with the TypePPar field set to T refer to partial periods splits. TypePPar set to G refers to the whole period.
Within the table itself, the time fields are split into three groups of three fields:
• Group 1 refers to the employee’s planned working time from the employee’s personal work schedule for the payroll period. The fields shown in PARTT equate to the following rate constants:
CDays (calendar days)>KSOLL
WDays (work days)>ASOLL
WHrs (work hours)>SSOLL
• Group 2 refers to the employee’s total working time for the payroll period. The fields shown in PARTT equate to the following rate constants:
CD1W (calendar days)>KDIVI
WD1W (work days)>ADIVI
WH1W (work hours)>SDIVI
• Group 3 refers to the payroll accounting period constants. Fields CDcon and WDcon are read from table T510H. WHcon is the employee’s basic pay divisor, which is held in field DIVGV on infotype 8. The fields shown in PARTT equate to the following rate constants:
CDcon (calendar days)>KDIVP
WDcon (work days)>ADIVP
WHcon (work hours)>SDIVP
Therefore, for my example employee, PCR G013 performs the following calculation:
/001 Amount / SDIVP = /001
Rate (Hourly)
$3,750.00 / 156.00 = $24.04
/003 Amount / ADIVP = /003
Rate (Daily)
$3,750 / 22 = $170.45
You can see this in the OT from PCR G013, shown in Figure 11.
Step 3: Convert the numbers to money within the payroll
Once the necessary valuation base wage types have been created in the payroll run, the schema applies the base to the appropriate wage types. This is performed in PCR G015 (Valuation of Time-Related Wage Types), or your copy of it.
PCR G015 depends on operation VALBS, which is used to read the valuation base from table T512W for a wage type. If a valuation base is found, the operation returns the valuation basis rate in the rate field of the wage type and multiplies the rate field by the number field to return an amount.
If you look at PCR G015, you see the processing shown in Figure 12.
Valuation Bases Usage Examples
Now that you have seen how to assign valuation bases to wage types, I’m going to illustrate the process with two examples: a donation to a charity and the calculation of pay for five hours of overtime.
Example 1: Valuation Basis 01
An annual plan is in place whereby at Christmas, an employee can elect to donate one hour of pay to a charity for children. To process this within the payroll, a new wage type, 3503 (Children’s Promise), is created. This wage type is input on infotype 15 as a negative number of hours (Figure 13).
Wage type 3503 is then set up in T512W with a primary Valuation basis of 01 (Figure 14). The hourly Valuation rate in /001 (Figure 15) is $24.04, and the Children’s wage type (3503) has only the number field set to minus 1.
After processing in PCR G015, the OT (Figure 16 on the next page) shows that the valuated Children’s wage type, 3503, has the rate applied, and the Amount field now holds 24.04-.
Figure 11 PCR G013 output table
G015 Valuation of Wage Types from Time Management
|__! *
|__! 1
|__! 2
|__” 3
|__” ****
|___” AMT?0 Has the Wage Type been Valuated before
|_” *
| |__ADDWT * Transfer Wage Type to Output Table
|_” =
|__” NUM?0 Make sure the Wage Type has a number
|__” * Wage Type /001 (others are hard coded)
|__” RTE?0 Has a Rate been specified (no need for Val Base)
|_” *
|_” =
|_VALBS? Has a Valuation Base been input on T512W
|_” *
|_” =
|_VALBS0 Read Primary Valuation Base
|_ADDNA * Combine Num & Amt
|_FILLF N Restore original Num Field
|_WGTYP=* Transfer the Wage Type to OT
|_VALBS1 Read the Secondary Valuation Base
|_. . . . .
|
Figure 12 Processing within PCR G015
Figure 13 Infotype 15 (Children’s Promise)
Figure 14 V_512W_B (wage type 3503)
Figure 15 Input table to PCR GO15
Figure 16 Output table from PCR G015
Example 2: Processing a Secondary Valuation Base
When you pay an Overtime Premium (wage type 5102) at 160 percent to employees, you also have a standard non-core-hours payment (wage type 5209) that is used to compensate employees at a rate of $1.50 per overtime hour worked. To process this in the payroll, set up wage type 5102 in table T512W, as shown in Figure 17 on the next page.
The primary valuation basis is calculated using Valuation basis 01 (Working Hours), and a percentage rate of 160. The secondary valuation base uses Valuation basis K to derive wage type 5209. As Valuation basis K specifies the rate is in table T510J, an entry was created in the table for wage type 5102 (Figure 18).
If an employee with a monthly basic salary of $3,050.78 on a standard contract of 156 hours per month has worked five hours premium overtime in the month, the following calculation is performed:
/001 = $3,050.78 / 156
= $19.56
WT 5102 = RTE /001 * %RTE * Num Hours WT 5102
= $19.56 * 1.6 * 5
= $156.48
WT 5209 = T510J Rate * Num Hours WT 5102
= $1.50 * 5
= $7.50
The output table from PCR G015 is as shown in Figure 19.
Figure 17 View V_512W_B for wage type 5102
Figure 18 Table T510J
Figure 19 Output table for wage types 5102 and 5209
Resources like the one you mentioned here will be very useful to me! I will post a link to this page on my blog. I am sure
ReplyDeletemy visitors will find that very useful.
Hadoop online training