SAP Knowledge Base Article - Public

2770236 - OData API upsert not saving the decimal numbers - SuccessFactors OData API

Symptom

You are trying to upsert values in your SF instance using OData in some entities (example EmPayComponentRecurring) that stores values like salary, bonus and you are passing the value like 1122.11.

After your OData API upsert, checking your user interface, the value stored is 112211 and not 1122.11.

Environment

  • SAP SuccessFactors HXM Suite
    • OData API

Cause

The default value of EC system is English and probably you are using another language on your API user. That's why the upsert get confused about the dot / comma and generates issues in decimal numbers.

EC system by default will always read data as if the locale is en_US. This is not problematic if the API user's locale/language was set to en_US and the upserted data uses US decimal notation.

If however, your API user locale is not en_US and is for example de_DE, you’d end up with roundtrip inconsistencies.

Resolution

To solve this issue, you can use the parameter "fileLocale=en_US" in your API call.

This parameter is explained in this page from SuccessFactors OData API Reference Guide.

Before this parameter was implemented, the only way to solve the issue would be changing the API username language in the SF settings to English US (top right Options > "Change Language").

See Also

SAP SuccessFactors HCM Suite OData API: Developer Guide

Keywords

decimal, SuccessFactors OData API upsert, comma, dot, not saving correctly, salary, bonus, EmPayComponentRecurring, entity, entities, EC UI error, without the decimals. , KBA , LOD-SF-INT-ODATA , OData API Framework , LOD-SF-INT , Integrations , How To

Product

SAP SuccessFactors HCM suite all versions