Product Information
Currency Conversion with Prescribed Exchange Rates
In some countries you are obliged to use the exchange rates published by the national bank for legal or VAT reporting when the transactional amounts are in foreign currencies.
However, often you use a central data provider for the exchange rates, such as Bloomberg or Reuters, and these rates may not be exactly the same rates as the national bank uses.
In SAP S/4HANA Cloud, there are specific configuration settings you can make to ensure that in some company codes the exchange rates provided by the national bank are used for calculating the value in the company code currency.
I will show you how to set this up on S/4HANA Cloud with an example.
In our example we assume that we want to ensure that the exchange rate used in a Hungarian company will be the exchange rate published by the Hungarian National Bank (Magyar Nemzeti Bank).
There are several configuration settings we need to look at:
- We need a new exchange rate type that can be used instead of the standard rate “M” and look at the settings for reference currency and inverted rates
- We need to assign the new exchange rate type to all the exchange rate pairs where we want to use the new rate type
- We need to change the default exchange rate type used in the currency type for the calculation of the Group Currency
Let us start with the new exchange rate type:
We need to create a new exchange rate type and understand its settings. To do this, go to the Manage Your Solution app and go to Configure Your Solution → Finance → General Settings → Currencies → Check Exchange Rate Types (ID: 102349).
Create a new exchange rate type as shown here:
Here we have created a new exchange rate type for the rates from the Hungarian National Bank called ZH.
There are two important fields in this screen we need to understand:
Reference Currency: To limit the number of combinations of exchange rates, you have to maintain a reference currency and then you only need to maintain the exchange rates against this currency. All other combinations of exchange rates needed can then be calculated using the reference currency.
For example, let us assume that your reference currency is USD. You then want to translate 100.00 GBP into the local currency for a subsidiary which is using EUR. The exchange rate table contains the following entries:
EUR/USD: 1.10000
GBP/USD: 1.25000
These values give the following (simulated) exchange rate:
EUR/GBP: 0.88000
Important: If the reference currency is set, then this is used over any maintained direct rates!
Inverted Rates: This indicator shows that if an exchange rate entry is missing in the system for the required translation from one currency into another, the inverted exchange rate relationship will be used.
For example, if an entry is missing for the translation of USD into GBP in the system, then the inverse rate entered for the translation of GBP into USD will be used for that exchange rates type.
Next we need to assign the exchange rate type to the exchange rate pairs where we need the system to use the national exchange rate.
To do this, go to the Manage Your Solution app and go to Configure Your Solution → Finance → General Settings → Currencies → Define Standard Quotation for Exchange Rates (ID: 102611)
Now the system will use “ZH” rate type instead of “M” when converting from EUR to HUF and from GBP to HUF.
It is important that you haven’t used a reference currency for the exchange rate type “M”, because then this will be used instead of the alternative exchange rate type.
Finally, we need to be sure that the group currency amount is correctly calculated in case we have a transaction where the transaction currency is the same as the group currency. This is only relevant if you calculate the group currency from the company code currency. If you calculate the group currency directly from the transaction currency, please skip this step.
For example, if your group currency is USD and you have an invoice for 100 USD, which will then be converted to 25,000 HUF for the company code currency, then you also want that the group currency amount should be 100 USD.
You would need to define the currency type for the company code to use the newly created exchange rate type.
As you can see from the screenshot above, it has been defined that the source currency for the group currency (30) is the company code currency (10) and the exchange rate that should be used to convert from the company code currency to the group currency should not be “M” but “ZH”.
You do this in the Manage Your Solution app and go to Configure Your Solution → Finance → General Settings → Currencies → Define Currency Settings for Ledgers and Company Codes (ID: 103379).
You do this in Manage Your Solution app and go to Configure Your Solution → Finance → General Settings → Currencies → Check Exchange Rate Types (ID: 102349)
Previously, when we defined ZH, we also set the Inverse Rate checkbox. This means that you should only maintain the rates to HUF and not the rates from HUF to the other currency rate types. This means that you only maintain that the rate from USD to HUF is 250 (as direct quotation) and not that the rate from HUF to USD is 250 as indirect quotation (= 0.004). By not maintaining the rates from HUF to USD but letting the system calculate the rates, you ensure the use of the inverse exchange rate to the rate that was used when calculating the company code currency value.
Now we have set up the system to use an alternative exchange rate type. Let us look at an example and how the amounts are calculated.
Let us assume that we have the following exchange rates in the system:
Exchange Rate Type | Date | From | To | Rate |
M | May, 1, 20YY | USD | HUF | 251 (Direct quote) |
M | May, 1, 20YY | HUF | USD | 251 (Indirect quote) |
ZH | May, 1, 20YY | USD | HUF | 250 (Direct quote) |
We now post a journal entry for 100 USD and the following calculations will take place:
As you can see, the system has used to alternative exchange rate type we configured for the calculation of the company code currency and group currency amounts during the posting of the journal entry.
Great blog and very useful to understand Fx conversion rates.
Thanks for sharing this useful information!
Thanks for sharing! That's really helpful.
Joergen Jensen Fantastic, thank you for publishing this content!
Thanks for sharing, great article !
I am wondering why company code currency (10) is defined in SAP on a global level and group currency (30) is company code specific. Would it be the other way round you could adjust for 10 the exchange rate type to the requirements for specific countries like HU, CZ and so on.
For group currency you use the identical exchange rate M in order to have for your company the same exchange rate type.
Regarding the solution in the article I have one question:
If you execute the foreign currency valuation for the leading ledger which represents the group gaap. For this you want to use the exchange rate type e.g. from ECB and not from the country specific national bank. Is there any good solution for that ?
In my point of view you need an additional exchange rate type for the valuation in the relevant countries in order to execute FCV with for example ECB courses.
Hello Alexander,
The fact is that in S/4HANA the usage of the exchange rate type “M” is in some places hardcoded for the company code currency type (10). Therefore, in Configure Your Solution, you cannot change the “M” to something else for the company code currency type and therefore you don’t need to be able to maintain it on a company code level.
Regarding your 2nd question then it is not possible to maintain the currency conversion settings ledger specific. The settings are relevant for both ledgers.
You can also calculate the amounts for the group results directly from document currency (source 00) and not from the company code currency (source 10). Then you can use any exchange rate type for this.
Kind regards,
Joergen
Nice explanation. One question though, since M rate is used by most companies for LC1 conversion, if we set the alternative exchange rate for M to ZH, does it mean that all other companies will use the same ZH rate? This may not be desirable. How do we solve it?
Hi Joergen,
It was an informative read and thanks for the content.
A few further questions, if you don't mind.
Is it possible to migrate from Bloomberg to ECB rates in a Company code in Production? The client wishes specifically for an Italy Company code to use ECB rate as the local requirement is to use ECB rate.
Does it have any system impact to switch from Bloomberg to ECB in a production environment?
What would be a safe approach to introduce/switch from Bloomberg to ECB rates?
Thank you for the clarity you can provide me...
Hi Joergen,
Why do you think an alternative exchange rate type cannot be used for M rate when M rate is setup with a reference currency for example USD? We have a running system where we are using this approach for Poland.
Br
Jan
Hello Sir,
My client is doing business in Company Code Currency (currency type - 10) in USD and we have ONLY USD currency define as local, global and CO object currency in our ledger. My client don't want to post any transaction (any transaction code through all module) other that USD currency, I mean no any foreign currency. Could you please let me know how can I make necessary change in current system. I know there is do through substitution rule but I am not technical knowledge, I am in functional area.
Thank you and appreciate for your time,
Chetan Bhatt
Hello Joergen,
Thanks for nice blog.
I have similar requirement as the exchange rate type “M” we have to give some type. I have to do changes in existing report, can you suggest me which is better approach in ABAP end some syntax suggestion. My Reqmt: Business would need the rates of PLN vs EUR and EUR vs PLN exchange rate combination. The rate is to be fetched from one of National bank
Regards,
Chandra Sekhar