[SAP HCM PY] Technique to retrieve the number of standard working days

BREAK dungbv7.

1. Understanding business requirements

In Vietnam, almost all companies choose to pay their employees once a month. Employees' salary is determined through their actual working days and standard planned working days in the month. Section 14 (4) (c) of Circular 47/2015/TT-BLDTBXH stated:

c) Daily wage is paid for one working day which equals (=) a monthly wage divided by (:) number of working days in the under regulations of law as selected by the enterprise, provided that it does not exceed 26 days

Thus, determining the number of standard working days in a month is one of the basic steps in the monthly salary calculation process. This post is to show you how to do it using SAP HCM standard configuration.

2. Understanding the system design

The SAP HCM system provides some standard functions to retrieve the employee's work schedule in the salary period, thereby helping to calculate the standard working days.

The two most essential functions are GENPS and PARTT located in the first part of the XT00 schema.


The GENPS function combines many time infotypes of the employee and then generates a PSP table that contains all the necessary time information about each day in the payroll period.

After that, the PARTT function sums up the time data of days in each payroll sub-period.

Now let's deep dive into these two functions and see what they are capable to do.

For example, the below employee has a raise in basic salary in the middle of the month, so he has two payroll sub-periods in the WPBP table:

5.png 6.png

Firstly, GENPS function creates PSP table:

1.5.png 2.png The most useful data in PSP table is the standard working hours of each day (the column that I highlighted). You can also notice that the “active” column indicates whether the employee is active on that day or not.

Secondly, PARTT function scans PSP table then brings out the employee calculated time values which are divided into 4 sections: 3.png

Total period parameter:

  • GSDIVI : Total working hours in the whole payroll period
  • GADIVI : Total working days in the whole payroll period
  • GKDIVI : Total calendar days in the whole payroll period 7.png

Partial period parameter for WPBP period nn:

  • TSDIVI : Total working hours in period nn as if nn cover the whole payroll period
  • TADIVI : Total working days in period nn as if nn cover the whole payroll period
  • TKDIVI : Total calendar days in period nn as if nn cover the whole payroll period

Note: Just in case the employee change working pattern in the middle of month then TxDIVI will vary among the nn periods.


Planned values for WPBP period nn:

  • TSSOLL : Planned working hours in period nn
  • TASOLL : Planned working days in period nn
  • TKSOLL : Planned calendar days in period nn


Switch set: honestly, I don't know what this is :))

Finally, time values are inserted into corresponding fields in each sub-period of WPBP table.


Now you can use these values in payroll calculations.

For example, I have wage type 1P01 – Basic Salary and 8804 – Number of Paid Days.

First I use ACTIO function to create 8801 - Number of Standard Working Days in table IT.

Note that I divided GASOLL by 8 (number of standard working hours in a day), you can change it to a constant for centralized management.

image.png image.png

Then I create another PCR using wage type 1P01 to divide its amount along with Paid Days and Standard Working Days. image.png

Result: image.png

Ok, that is all for today. Thanks for reading 😀

May the best solution be with you