In Treasury management, when a transaction is created in foreign currency, the amount in foreign currency needs to be translated to local currency in transaction management (independent of valuation area), and also to valuation currency in position management (dependent of valuation area).
In customizing under
Financial Supply Chain Management
-> Treasury and Risk Management
-> Transaction Manager
-> General Settings
-> Accounting
-> Organization
-> Assign Accounting Codes and Valuation Areas
For the combination of accounting code and valuation area, in the “Valuation Area - Additional Data” section, following fields can be defined:
Valuation crcy : relevant valuation currency for the valuation area;
Exch. Rate Type: exchange rate type to be used for currency translation;
Translation: Currency Translation Control
For the translation, detailed information can be found in the F1 help of field “Translation” (as it explains the function clearly, I want to show it here):
-----------------------------------------------------------------------------------------------------------
Currency Translation Control
Definition
This setting controls when the amount in valuation currency is translated from the amount in position currency for position management. The amounts are translated with the exchange rate type specified on the position date.
Use
This setting applies when translating the amount in valuation currency for operative business transactions. Operative business transactions are not dependent on a valuation area when they are entered. They include all business transactions in transaction management such as investments, borrowing, purchases, sales, or charges. The setting does not apply to derived business transactions, valuations, or accruals/deferrals.
The different settings mean the following:
Different Valuation Currency: The amount in valuation currency is only translated if the valuation currency is different to the local currency. If the valuation currency and local currency are the same, the amount is transferred.
Always Translate: The amount in valuation currency is always translated from the amount in position currency.
If the amount is not fixed: The valuation currency is usually translated from the amount in position currency, like the always translate setting. If you have fixed the amount in local currency or the exchange rate of the payment to local currency in transaction management, the amount in local currency is transferred.
Dependencies
If you select Always translate or Amount is not fixed, the amounts in valuation currency in the corresponding valuation area may be different to the amounts in local currency in transaction management. This may be the case even if both currencies are the same. The amount in local currency is displayed in both securities account management and transaction management in the same way. The amount in parallel position management may therefore be different.
-----------------------------------------------------------------------------------------------------------
I would like to provide an example to explain it.
<Prerequisite>
Customizing settings:
Valuation Area 001
Valuation crcy EUR
Exch. Rate Type M
Translation Cat For different valuation currency
Valuation Area 002
Valuation crcy EUR
Exch. Rate Type EURO
Translation Cat Always translate
Valuation Area 003
Valuation crcy EUR
Exch. Rate Type EURO
Translation Cat If the amount is not fixed
Related entries in Table TCURR (transaction OB08), the latest rate (from USD to EUR):
M 2011.01.10 1,35462 X 1 USD = 0,00000 X 1 EUR
EURO 2011.01.10 0,00000 X 1 USD = 0,70000 X 1 EUR
<Case 1>
A Forex transaction is created in company code XXXX (local currency EUR), with buy 800 EUR and sell 1000 USD. For the outgoing side – update type FX2000-, amount in position currency is 1000 USD in transaction management, it is translated to local currency automatically from exchange rate M with the position date. The result is following:
Valuation Area 001 (For different valuation currency)
Position value date update type Amount in PC PC Amount in VC VC
2011.01.10 FX2000- 1.000,00 USD 738,21 EUR
-> Amount in LC is translated from amount in position currency 1000 USD with exchange rate type M and exchange rate EUR/USD 1,35462. As Valuation currency is equal to Local currency, the amount in VC is equal to amount in LC.
Valuation Area 002 (Always translate)
2011.01.10 FX2000- 1.000,00 USD 700,00 EUR
-> Amount in valuation currency is always translated from amount in position currency, in this case, the exchange rate type EURO (defined in customizing) and exchange rate EUR/USD /0,70000 is used.
Valuation Area 003 (If the amount is not fixed)
2011.01.10 FX2000- 1.000,00 USD 700,00 EUR
-> Since there is no fixed amount in local currency or the exchange rate of the payment to local currency in transaction management, it works the same as valuation area 002 (Always translate).
<Case 2>
In “cash flow” tab of the Forex transaction, for the sell flow, change it to “Fixed amount” 738 EUR.
Valuation Area 001 (For different valuation currency)
2011.01.10 FX2000- 1.000,00 USD 738,00 EUR
-> Amount in LC is transferred to amount in VC.
Valuation Area 002 (Always translate)
2011.01.10 FX2000- 1.000,00 USD 700,00 EUR
-> As it is “always translate”, although amount in local currency is manually changed to 738 EUR, the amount in valuation currency is translated to 700,00 EUR with exchange rate type EURO and the position date. As a result, even the valuation currency and local currency are the same EUR, the amounts are different.
Valuation Area 003 (If the amount is not fixed)
2011.01.10 FX2000- 1.000,00 USD 738,00 EUR
-> The amount in local currency is fixed, then it is transferred to amount in valuation currency.
In transaction management, you may check the amount in local currency “cash flow” tab with transaction FTR_EDIT; In position management, you may check the amount in valuation currency in transaction TPM13.
During posting (e.g. TBB1), for the same update type, it may happen that the amount in valuation currency is different from the amount in local currency in the deal for certain valuation area (depending on the customizing settings).
<Related coding>
class CL_ADAPTOR_SLA
method GET_DATA_FROM_FLOWS