SourceSystems usually contain amounts in various currencies which need to be translated for reporting. Every exchange is based on the same premises, the determination of an fx exchange rate and the definition of an currency translation type.
From a business users view
Exchange rates/Currency translation ratios
To exchange currencies there is a exchange rate respective a currency translation ratio necessary. Exchange rates are related to a exchange rate type meaning each exchange rate is stored to one or more exchange rate types which allows to translate by the bid rate, ask rate or middle rate.
Exchange rate types are stored in table TCURV and can be maintained through transaction OB07. Exchange rates can be stored based on exchange rate types as exchange rates or inverse exchange rates.
Maintain exchange rate types
Currency Exchange Rates
Can be maintained as a direct or indirect quotation. An indirect quotation expresses foreign currency per unit to the reporting currency.
The direct quotation is the opposite, reporting currency per unit to foreign currency. To maintain this transaction OB08
Maintain exchange rates
Maintain currency translation ratios
Currency translation ratios are used to exchange certain currency combinations to derive another currency. This requires a common currency to pair.
This allows to reduce the number of combination of currency exchange rates to be maintained. Maintain this in transaction OBBS.
Maintain currency translation ratios
From a BW developer view
Currency conversion type
Depending on the situation you need a different currency conversion types to exchange currencies. Which fx rate is used is dependend on the source currency, the target currency, the exchange rate types and the time reference. In what form these parameter are determiend lies in the currency conversion type. This is done in transaction RSCUR within BW.
- Select Exchange Rate type which is the key that defines exchange rates in the system.
- Select Source currency that needs to be converted
- Target currency which it gets translated to
- Select Time Reference (this can either be fixed or variable and if the time referenced is fixed the time which the exchange rate is determined is independent of the date. If it’s variable the time is determined by a time characteristic value.
Maintain a conversion type
Exchange Rate Type
This setting determines to what exchange rate type the exchange shall happen. This can either be done though a fixed exchange rate type or an InfoObject.
This required that the attribute 0RATE_TYPE is present. At the time of the exchange, during the query runtime, this InfoObject which contains the exchange rate type must be present.
Determines which exchange rate is underlying this can either be in the datarecord of the amount or can come from a specific InfoObject. If business content is uses all keyfigures are installed with the correct units. Even if generic datasources are used. In this case the corresponding currency field is stored in the datarecord. In some cases keyfigures are delivered to bw without a currency which makes a currency exchange impossible. A possibility to determine the source currency can be through a infoobject characteristic. For example country US will have the currency USD.
As a prerequisite to derive this the used InfoObject needs to contain the necessary masterdata. The attribute needs to be defined as a currency attribute. (each infoobject can only have one)
– Target currency can be derived on 3 different ways. Determining the target currency at the time of analysis is the most common way. The target currency is choosen at this time.
– A fixed target currency determines the target currency for the corresponding currency conversion type. This is useful if currency translation is done during staging of the data where there is no interaction with a user.
– Deriving the target currency through an infoobject can also be done the same way as for a source currency.
As fx rates change over time all fx rates are related to a valid time frame. To do a currency conversion a key date needs to be derived. This is either done with a variable or a fixed key date.
The variable key date is dependent on a date that is derived from a standard infoobject or a special infobject.