"When paid" solution for Variable payments - South Africa payroll

May 30, 2013 Tarun Kumar Mishra



In South Africa payroll, payments are made retrospectively but reported and taxed in the period they are accrued (when earned principle). However, there are payments like Overtime which are not realized or calculated before the payroll run for the period. Hence, these amounts are paid in the next period, but reported and taxed in the previous period. Incase, there is a change in tax year these amounts are reported in one tax year and paid in another tax year. This leads to incorrect calculation of interest and penalties from South African Revenue Service (SARS).



The employer paid the salary of February 2014 without the overtime amount of R1000 that was due because the amount was not calculated while the regular payroll run of February 2014. Thus R1000 is calculated retrospectively FOR February 2014 and paid to the employee IN March 2014. As you know, the tax year 2014 would close on 28th February 2014 and new tax year 2015 starts on 01.March.2014. Hence, currently with 'when earned' principle R1000 would get reported in the old tax year and paid in new tax year.


However, after the solution is activated the tax calculation will be based on tax rates of March (new tax year) and also reported in the March 2014 hence in the new tax year i.e when its paid.


The time of taxing and reporting of the payments has changed i.e. now they have to be reported in the period they are paid (in March 2014) and not in period they are accrued (in February 2014).


This legal change is applicable for the variable payments which are included: Overtime, Leave encashment, Bonus, Travel Reimbursements and Commission.




SARS codes that are impacted by the legal change are:





Income (Only overtime portion is to be considered as variable payment)


Annual Payment




Reimbursive Travel All Tax


Reimbursive Travel Non Tax




The solution was delivered in multiple phases:


Phase 1:

This phase included generation of technical wage types that will be used in the next phase of "When paid" solution.  These changes did not impact the processing of the payroll. However, the wage types delivered via this note are critical for calculations after implementing the next phase of the solution.


The wage types which are delivered through this phase are classified as following:

  1. Super / Original wage type: This wage type holds the original amount of the technical wagetype that is processed or outflows from that period.
  2. Base wage type: This wagetype was created to capture the split of the technical wagetype. The value of the base wagetype is same as the technical wagetype.
  3. Outflow wage type: This wagetype have the difference amount that has to be carried forward to the current period.
  4. Inflow wage type: This wage type is generated in the IN period (current period) and hold the difference amounts that are carried into the current period from previous periods retros happening in this period.


Note: Outflow and Inflow wage types are generated only after implementing the next phase of the solution. The data displayed below is for explanation purpose only.


To understand the above definition, let’s consider an example where the employee had commission of R1000 in period 01 and in the period 02 the commission amount was changed from R1000 to R2000 retrospectively.




Tech. WT

Super/ Original WT

Base wagetype

Outflow WT

Inflow WT

01 in 01














01 in 02







02 in 02









Phase 2:

This phase has the process of generating the retro wage types (Outflow and Inflow wage types). The difference amount is carried forward to the current period for reporting and taxation purpose.

The solution provided would work once the switch is activated. Refer to SAP Note 1821617 for the steps  to activate the solution.

Payroll Function WORET:

This payroll function reads the previous payroll result and stores it into an internal table which works like a temporary old results table.

Note:  This function is processed in the standard sub schema WMAP.


Payroll Function WINFL:

This function has different processing based on the first two parameters passed to the function:


1st Parameter (ACTIO) - There are 3 values that can be passed as first parameter to the function-

  1. a. OUT - Outflow wage types are generated when this parameter is used and this value of the parameter is used in the FOR period. Outflow is generated by finding the difference of the Super wage type in the current (IT) and old result tables. Once the difference is calculated the technical wage type is restored to its original value based on the base wage type in original period.
  2. b. IN - Inflow wage types are generated when this parameter is passed and this value of the parameter is used in the IN period. The wage type amount is cumulative of the outflow wage types generated in the previous FOR periods.
  3. c. BASE - The inflow wage types are added to the technical wage types, before the further processing takes place.

Note: The wage types that are generated based on cumulation class are generated by checking the corresponding cumulation class checked for the inflow wage type. This function is not used for components where the inflow wagetypes are cumulated into the technical wagetype using cumulation class.

  1. d. CLR: The intermediate internal table (SDT) which is used for calculating the difference amount (Outflow / Inflow wage type) is cleared using the parameter.


2nd Parameter (BASE) - In this parameter we pass the component that is processed. This parameter works along with the first parameter and the corresponding wage types like outflow and inflow wage types are generated.  The super and base wage types that are used to calculate the difference and restore the original value are determined from the table T5WRTW (View V_T5WRTW)

Previous Article
Terminology at SAP: 25 years of innovation
Terminology at SAP: 25 years of innovation

Terminology management has been part of SAP since the late 1980s. Over the past quarter-century...

No More Articles