Symptom
- How does the FTE calculation work?
- Manual FTE value is not saved - After saving the manually entered value in the "fte" field, the UI shows the calculated FTE and not the value set manually in the UI
Image/data in this KBA is from SAP internal systems, sample data, or demo systems. Any resemblance to real data is purely coincidental.
Environment
Employee Central - Job Information
Reproducing the Issue
Example:
- Edit Job Information data
- User has Standard Hours 40 and on the Legal Entity.Standard Hours it is also 40 - FTE is calculated as 1.
- Manually set the FTE field value 0 (was set to 1)
- Click Save
- The FTE value is saved as 1
Cause
If the standard-hours field is enabled in the configuration. The system will always calculate the FTE based on Job Info Standard Hours Vs Object Standard Hours (Legal Entity or Location or Job Classification) depending on configuration.
If the standard-hours field is not included in the configuration and instead a custom field is used for standard-hours, then you will need to use a Business Rule to automatically calculate FTE.
Resolution
The system will always derive the standardHours value used to calculate FTE from one of the following three objects based upon the placement of each objects code in the propagation XML, as the propagation data model reads from top to bottom.
jobInfo.standard-hours / jobInfo.company.standardHours
jobInfo.standard-hours / jobInfo.JobClassification.standardHours
jobInfo.standard-hours / jobInfo.location.standardHours
Standard Configuration
If you do not want the system to check the position standard hours field, then you need to maintain the standard hours on one of the following objects: Legal Entity, Job Classification or Location
You also need to have the following code in the propagation XML for this to work
For Legal Entity:
<propagate foundation-element-id="LegalEntity">
<field id="standardWeeklyHours">
<destination field-id="standard-hours" hris-element-id="jobInfo"/>
</field>
</propagate>
For Job Classification:
<propagate foundation-element-id="JobClassification">
<field id="standardWeeklyHours">
<destination field-id="standard-hours" hris-element-id="jobInfo"/>
</field>
</propagate>
For Location:
<propagate foundation-element-id="location">
<field id="standardHours">
<destination field-id="standard-hours" hris-element-id="jobInfo"/>
</field>
</propagate>
NOTE: The logic for the propagation described above remains the same but you do not need to manually add this anymore since this is now hardcoded as well.
Please note the above config that has to be added to the propagation XML is the standard logic that we deliver to calculate FTE
Any other way has to be done via business rules which is a custom configuration to suit each customer, with regards to there needs
NOTE 2: The calculation of the FTE is triggered by a change in the standard-hours so if for example you try to manually update the FTE field without changing the standard weekly hours then the FTE calculation will not work.
Position Specific Configuration
If you need the system to check the standard hours value on the position object, then you will need to create a business rule like this:
The rule checks in the following manner:
- If Standard Hours of Position is defined and not zero, then FTE = Weekly Standard Hours / Standard Hours of Position.
- If Standard Hours of Position is not defined or zero, then FTE = Weekly Standard Hours / Standard Hours of Job Code.
- If Standard Hours of Position and Standard Hours of Job Code are both not defined or zero, then FTE = Weekly Standard Hours / Standard Hours of Location.
- If Standard Hours of Position, Standard Hours of Job Code and Standard Hours of Location are not defined or zero, then FTE = Weekly Standard Hours / Standard Hours of Legal Entity.
- If Standard Hours of Position, Standard Hours of Job Code, Standard Hours of Location and Standard Hours of Legal Entity are not defined or zero, then FTE = 0.
This rule needs to be triggered onChange on the Standard Hours field on the job information element, which can be done via the XML or Manage Business Configuration
Important Note: The propagation XML code for the Legal entity standard hours, job classification standard hours and the location standard hours must be removed if going to use a rule like this to check the standard hours on the position
Please do continue to maintain the standard hours value on the objects themselves though, as the rule will be able to check against them in the following
If doing job info imports, you must have enable business rules during import permissions granted to the user so this rule can trigger
If the system finds no standardHours value, then it will move on to the next object and so on, until it finds a value.
Custom Configuration
If you do not want to use the standard/hard-coded method for calculating FTE, then you will need to configure the system differently to calculate the FTE. Using Business Rules and a custom-double field will meet this requirement. If you need to calculate FTE based on many different scenario's such as you need FTE to be 0 if the employee is on a Leave of Absence for example, then you need to configure this scenario with Business Rules.
Example - Custom Configuration
Via XML
- If you do not want to use the pre-delivered standard-hours functionality, then disable and remove the field from the configuration (meaning import SDM XML to first set the field jobInfo.standard-hours visibility to "none", then do SDM xml import again a 2nd time, and this time remove the field from the XML entirely).
- With the standard-hours field removed entirely from the XML - add a custom decimal field (custom-double) field to jobInfo and use this as your field for Standard Hours instead.
- Create a new Business Rule which you can set as an onChange (on the custom standard hours field) and/or an onSave rule (on jobInfo element) where the FTE can be calculated differently depending on the requirement/scenario.
Via BCUI
- If you do not want to use the pre-delivered standard-hours functionality, then disable and remove the field from the configuration > navigate to Admin Center > Manage Business Configuration > jobInfo element > first set the "Enabled" status of the field to "No" and click Save. Then once the page refreshes, click Take Action > Make Correction and then click the trash can icon to the right of the standard-hours field and then click Save again.
- With the standard-hours field removed entirely from the BCUI (as described above) - add a custom decimal field (custom-double) field to jobInfo and use this as your field for Standard Hours instead.
- Create a new Business Rule which you can set as an onChange (on the custom standard hours field) and/or an onSave rule (on jobInfo element) where the FTE can be calculated differently depending on the requirement/scenario.
Example Rule -:
Warning: Do not use a Custom FTE field, as other area's of the application use the "fte" field in Job Information element (FTE for Position Management, calculation of Compa-Ratio & Range Penetration etc), so for these other features to work correctly, you must use the pre-delivered FTE field.
FAQ - Additional Information
Q) Where can I get Guide?
A) Guide: Employee Central Position Management
Chapter: Determining Standard Weekly Hours
Keywords
Calculate FTE, Job Information, Standard Hours, Employee Central, FTE, Rule, Manual FTE, jobInfo, fte, standard-hours, standardHours. , KBA , LOD-SF-EC-JOB , Job Information , LOD-SF-EC , Employee Central , LOD-SF-EC-POS-JTP , Job Information to Position Sync , How To