SAP Knowledge Base Article - Public

2136061 - Determining Which Pay Range is Used in Compa-Ratio and Range Penetration Calculations - EC


  • How does the system know what Pay Range an employee is associated with to be able to calculate the Compa-Ratio and Range Penetration values?
  • We have recently gone live with Pay Ranges but we are unsure how to validate the calculations performed by the system for Compa-Ratio and Range Penetration values

"Image/data in this KBA is from SAP internal systems, sample data, or demo systems. Any resemblance to real data is purely coincidental."


  • SAP SuccessFactors HXM Suite
  • SAP SuccessFactors Employee Central
  • SAP SuccessFactors Compensation



How does the system return/derive the Pay Range?

The system looks for a payRange which matches all of the configured objects associated with payRange. If one exact match is found, that is used.

If several matches are found, the first one which was found is used. If nothing is found, the last selection criterion (the last association for payRange) is removed from the search, and the search repeated, and so on.

An employees Pay Range is determined by the Foundation Object values associated with the Pay Range in question. This is configured in the Corporate Data Model for the object “payRange”.

Note: If the pay range association which is less maintained please move /keep that association at bottom. Otherwise maintained values will get ignored if exact match is not found.
For example if there was another association called geozone as 2nd association in between pay grade and legal entity with empty value maintained in pay range FO, then system would ignore legal entity association(which is actually maintained) due to no exact match found and would then ignore geozone and finally select first match based on pay grade only. This means the pay range can be based on any other legal entity not related to employee.

  • In the example below the company has decided to associate the “Legal Entity” and “Pay Grade” fields with Pay Range:


When the system looks to calculate the Compa-Ratio and Range Penetration values it will look up what Legal Entity and Pay Grade values the employee has set in their current Job Information record

  • Below the employee has Legal Entity “ACE_CAN” and Pay Grade “H-8”:


  1. The system then looks for the EXACT match in the system:


  1. The Compa-Ratio and Range Penetration are correctly calculated as the correct Pay Range has been identified:


  • The Compa-Ratio and Range Penetration values are calculated based on Pay Component Groups
  • You must define which Pay Component Group is used to calculate both Compa-Ratio and Range Penetration
  • You can use 2 seperate Pay Component Groups for each of the calculations
  • To define which Pay Component Group is used for the calculation, please navigate to Admin Tools > Manage Organization Pay and Job Structures, search for the desired Pay Component Group to use and set the "Use for Comparatio Calculation" and "Use for Range Penetration" values to Yes
  • Per the example below, we are using the "Annual Salary" Pay Component Group:


The calculations used for Compa-Ratio and Range Penetration for a regular full time employee (FTE = 1) are as follows:

Compa-Ratio =     AnnualizedSalary / (Pay Range Mid Point * FTE)  = X * 100 = %

                     Example -:       430,000 / (425,000 * 1)                            = 1.01176 * 100 = 101.176%

Range Penetration =      AnnualizedSalary – (Pay Range Minimum Pay * FTE)

                                      (Pay Range Maximum Pay - Pay Range Minimum Pay) * FTE    = X * 100 = %

                      Example -:             430,000 – (400,000 * 1)          30,000

                                                    (450,000 – 400,000) * 1   =     50,000                          =  0.6 * 100 = 60%

Does the employee work part time?  If the employee has FTE < 1 set in Job Information (for example FTE = 0.5), the Compa-Ratio and Range Penetration calculations take this information into account.  For example, an employee in the same Pay Range with an FTE of 0.5 and an annualized salary of 215,000  has the same Compa-Ratio and Range Penetration as the full-time employee (FTE = 1) with an Annualized salary of 430,000.

Compa-Ratio =     AnnualizedSalary / (Pay Range Mid Point * FTE)  = X * 100 = %

                     Example -:       215,000 / (425,000 * 0.5)                        = 1.01176 * 100 = 101.176%

Range Penetration =      AnnualizedSalary – (Pay Range Minimum Pay * FTE)

                              (Pay Range Maximum Pay - Pay Range Minimum Pay) * FTE    = X * 100 = %

                    Example -:                 215,000 – (400,000 * 0.5)   =   15,000

                                                     (450,000 – 400,000) * 0.5     =  25,000                      =  0.6 * 100 = 60%

Checking the derived Pay Range and Calculation using Value Help in the UI 

It is possible to check the derived Pay Range as well as review the calculation being performed directly in the Compensation Info UI

Click the blue ? icon next to the Compa-Ratio and Range Penetration field to show the following information:

    • Which values in Job Info are being used to identify the Pay Range used in the calculation
    • What is the Pay Range that is being derived by the UI based on the values from Job Info
    • The calculation that is used to calculate the value
    • The result of the calculation


Troubleshooting Incorrect Calculations

Calculations are never incorrect. Usually the reason why the Compa-Ratio and Range Penetration values are not correct is due to the Pay Range not being correctly identified due to missing criteria in the employee’s Job Information data or because a Pay Range does not exist with the associated combination of Foundation Objects to match against the employees Job Information data. So the things to verify when the calculations are incorrect are -:

  1. Employee Data Issues: Does the employee have data in their current Job Information record to satisfy the Pay Range associations defined in the Corporate Data Model (If you are unsure of what your associations are, please open a support ticket and the support team can help identify this for you).
    •  Please note that only association to Job Information fields are currently supported.
  2. Pay Range Data Issue: Does the Pay Range exist with matching values to satisfy the Pay Range associated data defined in the employees Job Information data (You can manually add a new Pay Range to satisfy the combination via Admin Tools > Manage Organization, Pay and Job Structures). You can tell which Pay Range is derived by the UI, by clicking on the "?" icon next to the Compa-Ratio or Range Penetration field, as mentioned above.
  3. Pay Range Foundation Object Configuration Issues: If the issue is not with the Employee's Data or the Pay Range values that exist in the system, then the last place to check is that the Pay Range "Associations" are valid/correct. Most common misunderstandings/misconfigurations are -:
    • Geozone association = If you have geoZone configured as one of the associations, only the geozone of the selected "Location" is used (any custom-string fields configured as type="geoZone" will be ignored). Please note that this configuration requires you setup an association on Location (ONE_TO_ONE) with the geoZone Foundation Object. When checking the Locations Geo Zone, the system will look only for the association and again, not a custom-string field with type="geoZone"
    • Job Family association = You need to have configured a custom-string field in the jobInfo element, with type="jobFunction" for this to be considered.
    • Country association = You need to have configured a custom-string field in the jobInfo element, with type="Country" for this to be considered. - Please refer to article 2530482 - How to use the Country object in Pay Range Derivation
    • Frequency association = Is not supported
    • Custom MDF Object association = Is supported, but the you need to ensure that a field is defined in jobInfo that points to this object, and the field is filled (so treat the same as Foundation Object).
    • ONE_TO_ONE vs ONE_TO_MANY associations = Both are supported
    • How many associations are supported? = There is no technical limit, but please see the technical limitations from other modules/features -: 

SPECIAL NOTE: When all of the associated values are not maintained on the Pay Range, and an exact match cannot be found the UI will ignore the "last defined object association" if NULL or no match is returned. This means that if you are using for example 5 associations to derive Pay Range, and a match is not found based on all 5 associations, then the UI will remove the last association defined on Pay Range object configuration and try to find a match with the remaining 4 associations. The UI will then keep removing an association from the query until a match can be found. This means that if out of the 5 Pay Ranges, only 3 are always used for all Pay Ranges, then these 3 associations should be the top 3 associations defined in the Pay Range object configuration.

What you will find is expected system behavior, is that if one of the values is missing in the Job Information data, or a Pay Range does not fully match the criteria defined in Job Information, then the system will find the closest match. This means that it will find the 1st Pay Range with a value that matches the information defined in Job Information. Based on the above example configuration, if the employee had Company set but no Pay Grade, then the system would find the 1st Pay Range in the list with the matching Company value and it would at that point ignore the Pay Grade association.

Please refer to article 2271107 to understand how the Pay Ranges can be exported and checked to verify the Pay Range with X combination of values actually exists in the system (it is also taggen in the Reference section at the bottom of the page)

Troubleshooting Blank Compa-Ratio and Range Penetration Calculations

Q) Why are the Compa-Ratio and Range Penetration displaying blank in the UI?


A) You can see the cause in the Value Help pop-up:


The Mid Point value of the derived Pay Range is blank or 0

Check the Pay Range (in our above example this is (H-AU-08)) and notice the values needed to calculate both Min, Mid and Max Pay points are 0 (therefore the calculation cannot complete):


Q) When viewing the History in the Compensation Information portlet, what Effective Date is used by the portlet to calculate the Compa-Ratio and Range Penetration values?

A) In the Compensation Information History UI, the calculation of Range Penetration and Compa-Ratio is the Effective Date of the selected record. In short, if the Compensation Info record is dated 01/01/2018, then it will derive the Pay Range needed to perform these calculations by the Job Info record that is effective on 01/01/2018 and the matching Pay Range that is effective on 01/01/2018

Q) How does Effective Dating impact what I see in the UI?

A) The Effective Date of the UI will determine which Job Info record is selected to derive the Pay Range - to determine which one is used in the calculation when troubleshooting, consider these steps to validate the derivation -:

  • Get the Effective Date from the UI
    • People Profile UI: This is the "As Of" in the People Profile UI 
    • History UI: If viewing Comp Info History, this is the Effective Date of the record being viewed.
  • Then get the Job Info record that is effective on that date to determine the values used to then derive the Pay Range value.
  • Then search for the Pay Range.
    • Remember that the Pay Range is also Effective Dated. So take this into consideration when manually determining the Pay Range 

Q) Issues due to ambiguous data model setup for Job Information:

A) Avoid having more than one field referring to an entity used in the associations to determine the pay range. Please be aware that if there are several such fields, it can happen, that the system picks another one than expected. For further detail please refer to documentation Pay Range | SAP Help Portal , and there especially to the example stated for item 1."

In order to determine the pay range of an employee, the system will proceed as follows:

  1. For each associated field type, it looks for a field in the employee Job Information with the same type.

    Ideally there is only one field with a specific type (example pay grade) in Job Information. If a standard field and a custom field exist with the same type, the system will use the standard field. If several custom fields exist with the same type, the system will simply pick one. Even if a Job Information field is inactive – the system takes both active and inactive fields into account.

    For example, if there are 2 fields with a specific type configured in the Corporate Data Model, where one is active but the other inactive. When the system tries to determine the pay range, it will find both fields and it is possible that the system picks the inactive field. This can lead to an unexpected pay range being determined. Therefore, we recommend that there should be only one such Job Information field – no matter if active or not.

  2. The system looks for a pay range that matches all the associated field values from employee job info.
  3. If one (or more) matching pay ranges are found, the system uses the first one.

    Defining several pay ranges that match one combination of associations is a (common) configuration error.

  4. If no matching pay range is found, the system will remove the last associated field from the list (based on the order of the associations in the Corporate Data Model) and repeats steps 2—4 until either a match is found or no associations are left (= no pay range for this employee).

Integration with Compensation Management

Please be aware that currently, the Compensation Management module only supports a maximum 4 associations for Pay Range (meaning "payGrade" and 3 additional associations). Exceeding this in Employee Central could lead to problems when calculating Pay Range in Compensation Management

Advanced Reporting

Please be aware of the following caveats to consider when implementing Pay Range in Employee Central. For example, having the association to "LegalEntity" defined in the Pay Range object is required for the Advanced Reporting > Standard Reports to work

  • 2559179 - Compa Ratio and Range Penetration report - Advanced Reporting
  • 2607166 - Standard EC Report Compa Ratio and Range Penetration cannot be validated - Table 'FOUNDATION_OBJECTS_VIEW_FO_OBJECT_RELATIONSHIPS_T_PAY_RANGE_LegalEntity (1)' is not found

FAQ - Additional Information

Q) Where can I get information on this from the Guide?

A) Guide:Implementing Employee Compensation Data

See Also


SF, success factors, EC, payRange, Pay Range, compa-ratio, range penetration, position, jobInfo, ec, employee central,'FOUNDATION_OBJECTS_VIEW_FO_OBJECT_RELATIONSHIPS_T_PAY_RANGE_LegalEntity  is not found currency, currency exchange rate , KBA , LOD-SF-EC-CMP-CAL , Calculated - Pay Comp Groups, Compa/ Range & Charts , LOD-SF-EC-JOB , Job Information , LOD-SF-EC-CMP-UI , History or MSS UI , LOD-SF-EC-FOO , Foundation Objects (Organisation, Pay and Job Structures) , How To


SAP SuccessFactors Compensation all versions ; SAP SuccessFactors Employee Central all versions ; SAP SuccessFactors HCM suite all versions