Currency Conversion in SAP Analytics Cloud Planning and SAP BPC
Note: SAP Analytics Cloud follows a quarterly upgrade cycle, therefore some of the information contained in this document, in particular, some of the limitations, may become out-of-date with future releases.
SAP Analytics Cloud (SAC) for Planning is a cloud-based planning solution. It is a primary strategic SAP solution for planning according to SAP Roadmap (below picture). There’s also a strong on-premise offering available, which is SAP Business Planning and Consolidation (SAP BPC).
This blog post provides an overview of one of the basic and frequently used planning features of SAP BPC and SAC, which is currency conversion. This overview is made primarily from product functionality perspective, not from use case perspective. It is assumed that the reader is familiar with those.
The purpose is to give a brief overview for specialists, who have been designing, implementing or extensively using a planning solution before, about what the tools are capable of in the space of currency conversion. It might help to decide, which product to use in which scenario.
Purpose of the tool
Currency conversion in SAP BPC was designed with support of both planning and financial consolidation requirements. Hence, a variety of in-built features, such as flexible definition of Business Rules, depending on Account Rate Type, and enablement of multiple Group/Sub-group Currencies.
If the product is used only for planning, then there’s a choice of using Business Rules or Script logic. In the Script logic, it is possible to convert any currency into any currency using Exchange Rates from Rate-type model.
SAP Analytics Cloud for Planning
In SAC, currency conversion is designed for supporting planning and simulations. For example, it is performed at runtime and a specific rate version can be applied on-the-fly to evaluate the impact of rate changes in a particular scenario.
First of all, a quick reminder, that BPC can be of two different configurations, which are technically 2 different products: Standard configuration and Embedded configuration.
There is plenty of information, comparing the two, for example, below article:
In this blog post, I will try not to focus on the differences between these two configurations, where possible.
- Persistence concept
In BPC, the approach is to persist the result of the currency conversion calculation. Be it Currency Conversion Business Rule, Script logic (in BPC Standard configuration) or Planning function (in BPC Embedded configuration), the results are written back to the database after the conversion rule had been run.
An advantage of this approach is good traceability and ability to use locking mechanisms, e.g. Work Status, to make sure that converted numbers do not change, even if updates to exchange rates or local currency data are made in the system. This is particularly important in financial reporting for keeping already reported numbers unchanged.
A disadvantage is data redundancy. It means persisting data in each required currency and group/subgroup. In addition to that, the necessity to run calculation again, if updates are made to exchange rates.
It is worth mentioning though, that in BPC Embedded it is also possible to use on-the-fly, i.e. runtime, currency conversion by utilising SAP Business Warehouse (BW) functionality. This may be used for some of pure planning, i.e. non-consolidation, scenarios. So with this configuration, the variety of tools is quite impressive.
- Data Model
In BPC, Currency is always a separate dimension of a model. It effectively means, that for each data record or transaction one can decide, which currency it is stored in. One common use case, where this flexibility is needed, is having multiple transaction currencies for same company, contract, customer, or any other dimension combination.
- Flexibility of calculations
In BPC, the approach is to use Rates model to store currency exchange rates. This model can be updated either from S/4HANA or SAP BW, or rates can be directly input via input form.
The data in the model is then accessible from Currency conversion Business Rule, or via custom logic, be it Script Logic (BPC Standard version), Planning function (BPC embedded version), or even programmatically via BADi.
SAP Analytics Cloud for Planning
- Runtime calculations concept
In SAC, the result of currency conversion is not stored, but is calculated at report runtime. This is a more contemporary approach that is reducing data footprint. This is possible, because compute power allows to perform calculations during report runtime without performance issues.
- Data Model
In SAP Analytics Cloud planning, Currency is not a dimension, but is a result of so-called cross-calculation. The cross-calculation is looking at the currency property of a specified dimension to ‘understand’, which currency the stored data is nominated in, and then convert it into reporting (default) currency during report runtime. The first part of it, where a property is used, is somewhat similar to the Local Currency concept of BPC, with the difference that in BPC all required currencies are persisted as result of calculation, unlike the runtime conversion in SAC. Also, in SAC it can be any dimension type, e.g. Contract dimension (below picture), or any other, depending on requirements.
During model creation a modeller has to decide, which dimension will define the currency that data is stored in. For example, if this is a Company dimension (most common setup), then it will be a specified Local Currency of the company, similar way as it is done in BPC. If this is a Contract dimension, for instance (below picture), then Contract currency, specified as a property, will define the only currency for storing data against that contract. This only defines the currency of persisted data. Cross calculations will further convert into reporting or any other currency on-the-fly.
It effectively means that in order to use the feature, any data being uploaded to SAC planning model may need to be pre-converted. Transaction currency, where there may be multiple currencies that a company transacts in, is a good example. It can’t be loaded straight away into SAC.
This default configuration can be enhanced/replaced by creating an additional generic currency dimension, which can capture Transaction currency and this way partially overcome the limitation. Partially – because in this approach we won’t be able to use SAC currency conversion tables for further conversion from transaction currency to any other currency, for example, local currency.
Please refer to below blog post and training tutorials that describe in detail how currency conversion works in SAC.
- Flexibility of calculations
In SAC, currency conversion tables are used. Unlike in BPC, these tables are aligned to the way currencies are natively stored in SAP S/4HANA and SAP BW, which is great from integration perspective, e.g. any-to-any currency rate can be maintained and Valid from date is used (below picture).
But current limitation is that these tables are only accessible by Cross Calculations, i.e. for the purpose of runtime conversion. This fits perfectly into the underlying design principle, but it may not fit some specific requirements. One such scenario, as was mentioned above, would be converting from Transaction currency to Local currency.
Another scenario would be calculating gain/loss on FX hedging contracts, where we need to compare hedge rate maintained by contract in the model with spot/average rate from the conversion table. Then, the result of this comparison will have to be recognised as Gain or Loss and persisted in the model. The workaround could potentially be in using the persistence approach with generic currency dimension, but it is not yet possible, since Currency conversion table is not accessible in SAC Advanced Formulas script. Therefore, not using SAC currency conversion table in such calculation is probably the best option at this point.
Based on above analysis, below is the opinion on tools that can be better suited for a particular scenario:
- SAC currency conversion is well-suited for simulations, because of its runtime calculation approach and user-friendliness of defining such simulations.
- In the case of handling transaction currency and more custom scenarios, it may be needed to realise some of conversions outside of SAC or use a custom Exchange Rate model within SAC.
- SAP BPC currency conversion is better positioned for handling transaction currency and for custom calculations.