Skip to Content

Currency Translation is required in case of organizations having their presence in multiple countries with different currencies. There is a How-to-guide that demonstrates the step-by-step procedure for facilitating currency translation in BPC. Here is
the link for the same – http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/6052a57b-8c64-2c10-b3a5-b0378ff21243?QuickLink=index&overridelayout=true&44732084435055

But this standard procedure can be adopted for the following cases –

1. Where it can convert transaction data recorded in local currency to specified reporting currency

2. Where it converts subsidiaries’ data to Group’s currency

Now there is a concept of transaction currency in ECC or BCS but it is not there in BPC and there may be cases where for a particular geography, transactional data might have been stored in transaction currency. So in such a scenario, for a particular geography, we will have multiple transactions recorded in multiple transaction currencies. And, we might require performing a
currency translation from the transaction currency to a specified reporting currency. This is not the standard currency translation and would require a tweak in the process. This can be achieved by implementing BADI or by writing custom script logic and calling that script logic from a data manager package.  Writing the script logic would be much easier as compared to a BADI. Here is a quick guide to such a script logic –

1. Maintain the currency exchange rates in RATE application

2. Make use of function *LOOKUP to fetch the currency exchange rate from the rate application to your planning application

3. Take organization in loop, and for the accounts for which you wish to do a currency translation, write a *REC statement to write a new record.

Below is the sample code which can be manipulated as per the need.

 

*LOOKUP RATE

     *DIM RATEEURCUR: TIME = “2011.07”

      *DIM RATEEURCUR:CATEGORY = “Actual”

      *DIM RATEEURCUR:R_ACCOUNT = “CLO”

      *DIM RATEEURCUR:R_ENTITY = “Global”

      *DIM RATEEURCUR:INPCURRENCY = “EURO”

      *DIM RATEEURCUR:MEASURES =”PERIODIC”

*ENDLOOKUP

*FOR % ORGANIZATION% =<Dimension Members>

     *WHEN P_ACCOUNT

          *IS “RECEIVABLES”

            *REC(EXPRESSION = %VALUE%/LOOKUP(RATEEURCUR), RPT_CURRENCY= USD)

       *ENDWHEN

*NEXT

To report this post you need to login first.

2 Comments

You must be Logged on to comment or reply to a post.

  1. Cora Boettger

    Hey Ashish,

     

    thanx for this great post. However I’m wondering how to solve the folloging issue: we have legal entities entering prices for a customer-product combination in various transaction currencies because they have multiple contracts with diffent currencies. Now. If we use a script to convert those entries into EUR we do not get the sum of all contracts but it overwrites every customer-product combination and only the “last” value is on the database. How could we solve this issue?

     

    Thank you in advance,

     

    Cora

    (0) 
  2. Krishna Ramisetty

    Hi Akash,

    Thanks for your Sample Code in Translating Transaction Currency to Reporting Currency. I actually has INPUTCURRENCY in both my Planning and rates Cube.

    May be for this reason or not, I’m getting some weird values. Also it is not picking up correct Exchange Rates, I maintained in Rates Model for that Period.

    Further, I would like to make this logic work for any Transaction Currency Budget User key in for a given COMPANY, OFFICE, ACCOUNT, EMPLOYEE, TITLE and TIME.

     

    Highly appreciates your inputs in this regards.

    Thanks and Regards,
    Krishna

    *LOOKUP Rates
    *DIM RATEGBPCUR: TIME = “2017.07”
    *DIM RATEGBPCUR:CATEGORY = “Budget”
    *DIM RATEGBPCUR:R_ACCOUNT = “BDG”
    *DIM RATEGBPCUR:R_ENTITY = “Global”
    *DIM RATEGBPCUR:INPUTCURRENCY = “GBP”
    *DIM RATEGBPCUR:MEASURES =”PERIODIC”
    *ENDLOOKUP

    *FOR COMPANY =US11
    *WHEN ACCOUNT_PLN
    *IS “STAND_RATE_TK”
    *REC(EXPRESSION = %VALUE%/LOOKUP(RATEGBPCUR), INPUTCURRENCY= USD)
    *ENDWHEN
    *NEXT
    *COMMIT

     

     

    (0) 

Leave a Reply