In this document I want to give an overview about how currencies are processed in CRM trade promotion management. This contains some useful information, some process use cases and some known issues.
How is the TP currency determined?
When creating a new trade promotion the currency field is not filled per default.
The currency can either be entered manually or is defaulted by the sales organization assigned to the trade promotion.
The currency is a TP header attribute. The defaulting happens in the following method:
CL_CRM_MKTPL_HEADER_ITEM=>DEFAULT_CURRENCY
The defaulting based on the sales organization happens only if no currency is yet assigned. If the currency is manually inserted before the defaulting no longer takes place. The same rule is valid when changing the sales org. In case this design needs to be changed - so the manual assignment of the currency should get overruled by the default currency from the sales org this needs to be done using BAdI CRM_MKTPL_OL_OBJ interface method SET_ATTRIBUTES_AFTER.
Which currencies can be used in a trade promotions?
Basically there are no restrictions. Each currency defined in table TCURC can be used. The validation of the entered currency happens in the following method:
CL_CRM_MKTPL_HEADER_ITEM=>CHECK_CURRENCY
The currency is not validated against the sales org, nor the planning account in the trade promotion. The only thing that is considered during the check is that if the trade promotion was created from a deal that the TP and the deal currency must match.
In case the check should be done more restrictive and the currency should be checked against some further attributes the same needs to be done using BAdI CRM_MKTPL_OL_OBJ interface method CHECK_ATTRIBUTES.
Can the TP currency changed?
The TP currency can be changed as long no planning profile group is assigned to the trade promotion.
Once a planning profile group is available in the trade promotion the currency can no longer be changed. As long as the TP status allowes removing the planning profile group the currency can be changed. This is usually for trade promotions that are not yet released.
The currency change design is controlled by the following method:
CL_CRM_MKTPL_HEADER_ITEM=>IS_CURRENCY_CHANGEABLE
How are decimals considered for currencies?
Most currencies use 2 decimals per standard. All the amount fields are displayed using the decimals currency settings.
There are however currencies existing with other than 2 decimal places. The so called exceptional currencies are defined in table TCURX. When looking at the JPY (Japanese Yen) this is defined as having 0 decimal places.
The displayed amounts in the trade promotion are using these settings.
What to be considered with funds integration?
When having funds integrated into trade promotion management, the trade promotion must have a funds plan assigned using the same currency as the trade promotion. Having a trade promotion planned on USD with a EUR based funds plan won't work. The TP and the funds plan currency must match.
The check for the TP and funds plan currency is performed in the following method:
CL_CRM_MKTPL_FPLAN_ITEM=>CHECK_CURRENCY
What to be considered with claims integration?
When the trade promotion is used in claims processing we need to distinguish between the planning and execution currency. The TP currency is the planning currency, whereas the claims currency is the execution currency. The planning currency is used in the trade promotion, in the pricing conditions and in the rebate agreement. The execution currency is used in the claim, the claim settlement and used in the claim validation process. The planning and execution currency do not necessarily be the same.
Imagine having a trade promotion planned with USD.
The rebate agreement as well as the fund usages are created with USD currency.
The claim however may use EUR currency. Once a trade promtotion is added to the claim a currency onversion is taking place.
When adding the trade promotion to the claim the amounts are retrieved from the TP fund usages, while retrieving the amounts the currency conversion takes place in the following method:
CL_CRM_FM_FPO_CURR_CONVERT=>CONVERT_TO_FOREIGN_CURRENCY
For any further processing such as settlement creation the claims currency is used.
Are there any typical issues related to currencies in trade promotion management?
For currencies using 2 decimals there are no known issues, however for exceptional currencies there are some issues, most related to the display of the amounts. Known issues are solved with the following SAP notes:
2170820 Wrong decimal point for amount on funds assignment block
2106896 Decimal issues in Planning Layouts when working with exceptional currencies
2103997 Wrong spend value is updated for a percent spend type in the spend overview grid
2094790 Trade promotion search not showing spend currency values
2073534 Wrong decimal point for amount on Claim Processing Documents
2033052 Totals Assignment Block is incompatible with Decimal Notation Y (1 234 567,89)
1963366 Currency decimal settings not considered in Spend Value Overview AB
1954292 Default Trade Spends currency for all condition calculation types, except percentages
1817618 TPM versions don't show correct spend values
1813856 Spend values and OI Cap are not correct in change history
1775791 Settled amounts wrongly displayed for non decimal currencies
1730452 Wrong spend value due to currency conversion
1712649 Spend Value and OI Cap with Currencies like TWD
1650994 Default currency code of Purch Item from parent object
1650481 Issue with exceptional currencies in Product Causals
1632124 Purchasing AB values not correct for ex currencies (TCURX)
1607017 Handling exceptional currencies in Trade Spends Values
Are there any typical issues related to currencies in claims management?
2106736 Error messages on invoice claims do not show correct amounts
2096111 Resolution tree root node with wrong currency format
2073534 Wrong decimal point for amount on Claim Processing Documents
1837253 Currency conversion issue during settlmenet
This collection will be updated whenever any new correction is released.