Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Currency Conversion

Former Member
0 Likes
2,177

hi friends,

How can i convert currency value based on selected currency by user.

could any one gives me complete code for that and tables relevent to it.

Thank you.

Regards,

MV

hi friends,

How can i convert currency value based on selected currency by user.

could any one gives me complete code for that and tables relevent to it.

Thank you.

Regards,

MV

7 REPLIES 7
Read only

Former Member
0 Likes
1,479

HI,

You can use the function module CONVERT_TO_LOCAL_CURRENCY.

Thanks

Naren

Read only

Former Member
0 Likes
1,479

Hi

Use the table <b>TCURR</b> for currency conversion or use the fun modules

CONVERT_TO_LOCAL_CURRENCY

CONVERT_TO_FOREIGN_CURRENCY

Reward points for useful Answers

Regards

Anji

Read only

Former Member
0 Likes
1,479

Hi,

Check this link for a sample code

Thanks

naren

Read only

S0025444845
Active Participant
0 Likes
1,479

Hi,

You can take exchange rate from vbrp or vbkd table and convert.

take help of this code.

FORM modify_data1 USING p_s_bukrs LIKE r_bukrs

CHANGING p_it_vbrp1 LIKE it_vbrp1

p_it_output LIKE it_output

p_it_out1 LIKE it_out1

p_it_vbrk LIKE it_vbrk

p_it_t001 LIKE it_t001

p_it_vbrp LIKE it_vbrp.

  • Local work areas and variables

DATA : lw_out TYPE typ_alv,

lw_out1 TYPE typ_alv1,

lw_t001 TYPE type_t001,

lw_vbrp TYPE type_vbrp,

lw_vbrk TYPE type_vbrk.

*// Clear work areas

CLEAR: lw_t001, lw_vbrp,

lw_out1,lw_vbrk,lw_out.

*To get Billing document for all sales orders in output table

IF p_it_output[] IS NOT INITIAL.

SELECT vbeln posnr aubel

INTO TABLE p_it_vbrp1

FROM vbrp

FOR ALL ENTRIES IN p_it_output

WHERE aubel EQ p_it_output-vbeln AND

posnr EQ p_it_output-posnr.

ENDIF.

IF p_it_vbrp1[] IS NOT INITIAL.

  • To retrieve company code from vbrk for vbeln = p_it_vbfa-vbeln

SELECT vbeln bukrs

INTO TABLE p_it_vbrk

FROM vbrk

FOR ALL ENTRIES IN p_it_vbrp1

WHERE vbeln = p_it_vbrp1-vbeln AND

bukrs IN p_s_bukrs AND

vbtyp NE 'N'.

ENDIF.

  • To retrive net sales value and exchange rate for all entries in p_it_vbrk

IF p_it_vbrk[] IS NOT INITIAL.

SELECT vbeln posnr kursk netwr aubel

INTO TABLE p_it_vbrp

FROM vbrp

FOR ALL ENTRIES IN p_it_vbrk

WHERE vbeln EQ p_it_vbrk-vbeln .

  • To retrive currency for all entries in p_it_vbrk

SELECT bukrs waers

INTO TABLE it_t001

FROM t001

FOR ALL ENTRIES IN p_it_vbrk

WHERE bukrs EQ p_it_vbrk-bukrs.

ENDIF.

*//To sort internal tables

SORT: p_it_t001 BY bukrs,

p_it_vbrp BY aubel posnr,

it_vbrk BY vbeln.

LOOP AT p_it_output INTO lw_out.

READ TABLE p_it_vbrp

INTO lw_vbrp

WITH KEY aubel = lw_out-vbeln

posnr = lw_out-posnr

BINARY SEARCH.

IF sy-subrc IS INITIAL.

LOOP AT p_it_vbrp INTO lw_vbrp

WHERE aubel = lw_out-vbeln AND

posnr = lw_out-posnr.

MOVE-CORRESPONDING lw_out TO lw_out1.

  • calculate net sales value in company code currency

IF lw_vbrp-kursk LT 0.

lw_vbrp-kursk = -1 * ( lw_vbrp-kursk ).

LW_OUT1-DOCWR = LW_VBRP-NETWR / LW_VBRP-KURSK.

ELSE.

lw_out1-docwr = lw_vbrp-netwr * lw_vbrp-kursk.

ENDIF.

  • To get comapany code

READ TABLE it_vbrk

INTO lw_vbrk

WITH KEY vbeln = lw_vbrp-vbeln

BINARY SEARCH.

  • To get comapany code currency

IF sy-subrc IS INITIAL.

READ TABLE p_it_t001

INTO lw_t001

WITH KEY bukrs = lw_vbrk-bukrs

BINARY SEARCH.

IF sy-subrc IS INITIAL.

lw_out1-waers = lw_t001-waers.

ENDIF.

ENDIF.

  • Append record in p_it_out1

APPEND lw_out1 TO p_it_out1.

CLEAR: lw_t001, lw_vbrp, lw_vbrk,lw_out1.

ENDLOOP.

ELSE.

MOVE-CORRESPONDING lw_out TO lw_out1.

  • Append record in p_it_out1

APPEND lw_out1 TO p_it_out1.

CLEAR: lw_out1,lw_out.

ENDIF.

ENDLOOP.

ENDFORM. " modify_data1

regards,

sudha

Read only

Former Member
0 Likes
1,479

Hi Virat,

Please check this..for sure it will help you.

First get the Exchange rate for the Currency.

Then get the Currency conversion factor, and Multiply the Document cuurency * Exchange rate * Conversion factor.

  CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5.
*
* If Document Currncy in SGD, Donot Display Exchange Rate XXX
* Condition for SGD and SGD4
    IF wa_bkpf-waers+0(3) NE 'SGD'.
*
      v_fmcur = wa_bkpf-waers.
* Get Current Exchange Rate - Ref: SD Logic
     IF ( NOT v_fmcur IS INITIAL ) AND ( NOT wa_bkpf-budat IS INITIAL ).
*
        CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
             EXPORTING
                  rate_type  = 'M'
                  from_curr  = 'SGD'
                  to_currncy = v_fmcur
                  date       = wa_bkpf-budat
             IMPORTING
                  exch_rate  = v_kurs2.
      ENDIF.
* Get Conversion Factor
  CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
       EXPORTING
            currency          = wa_bkpf-waers
            importing
            factor            = v_fact
            exceptions
            too_many_decimals = 1
            OTHERS            = 2.
  IF sy-subrc <> 0.
    MESSAGE s208(00) WITH
                    'May be too many Decimals for Currency Factor'(013).
  ENDIF.
*
      IF v_kurs2-exch_rate NE 0.
* Inverse the Exchange Rate from USD to SGD
        v_exrat = 1 / ( v_kurs2-exch_rate ).
*
        WRITE v_exrat TO wa_summary-exrat DECIMALS 4.
*
        v_wrbtr   = ( v_tamnt  * v_exrat * v_fact ).
        v_taxsum1 = ( v_taxsum * v_exrat * v_fact ).
        v_ntotl   = ( v_dmbtr  * v_exrat * v_fact ).
      ELSE.
        WRITE:/ 'Over flow, Exchange rate is ZERO'(005).
      ENDIF.
      CLEAR v_kurs2.
    ELSE.
      wa_summary-exrat = 1.
      v_wrbtr   = ( v_tamnt  * 1 ).
      v_taxsum1 = ( v_taxsum * 1 ).
      v_ntotl   = ( v_dmbtr  * 1 ).
    ENDIF.
*
  ENDCATCH.
  IF sy-subrc = 5.
    WRITE: / 'Overflow! Sum can not be calculated.'(011).
  ENDIF.

Healthy Rewards if help full.

Thanks..

Kaleem.

Read only

Former Member
0 Likes
1,479

cu

Message was edited by:

Sameer Pathak

Read only

Former Member
0 Likes
1,479

Currency Convertion (i.e. from EUR to GBP)

Below is the code for converting currency values from one currency to another. For demonstration purposes this example converts 10 euros into GBP. Please note when you display this value you may first need to convert it from its internal SAP value to the proper external display value. See here for more details.

please cut and paste chaneg the currency which ever you want or dynamically pass the parameter from the selection screen to that field ... so that all the currency can be displayed .

DATA: gd_fcurr TYPE tcurr-fcurr,
      gd_tcurr TYPE tcurr-tcurr,
      gd_date  TYPE sy-datum,
      gd_value TYPE i.

gd_fcurr = 'EUR'.
gd_tcurr = 'GBP'.
gd_date  = sy-datum.
gd_value = 10.

PERFORM currency_conversion USING gd_fcurr
                                  gd_tcurr
                                  gd_date
                         CHANGING gd_value.



* Convert value to Currency value 
*&---------------------------------------------------------------------*
*&      Form  currency_conversion
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GD_FCURR  text
*      -->P_GD_TCURR  text
*      -->P_GD_DATE   text
*      <--P_GD_VALUE  text
*----------------------------------------------------------------------*
FORM currency_conversion  USING    p_fcurr
                                   p_tcurr
                                   p_date
                          CHANGING p_value.

  DATA: t_er        TYPE tcurr-ukurs,
        t_ff        TYPE tcurr-ffact,
        t_lf        TYPE tcurr-tfact,
        t_vfd       TYPE datum,
        ld_erate(12)   TYPE c.

  CALL FUNCTION 'READ_EXCHANGE_RATE'
    EXPORTING
*       CLIENT                  = SY-MANDT
      date                    = p_date
      foreign_currency        = p_fcurr
      local_currency          = p_tcurr
      TYPE_OF_RATE            = 'M'
*       EXACT_DATE              = ' '
   IMPORTING
      exchange_rate           = t_er
      foreign_factor          = t_ff
      local_factor            = t_lf
      valid_from_date         = t_vfd
*       DERIVED_RATE_TYPE       =
*       FIXED_RATE              =
*       OLDEST_RATE_FROM        =
   EXCEPTIONS
     no_rate_found           = 1
     no_factors_found        = 2
     no_spread_found         = 3
     derived_2_times         = 4
     overflow                = 5
     zero_rate               = 6
     OTHERS                  = 7
            .
  IF sy-subrc EQ 0.
    ld_erate = t_er / ( t_ff / t_lf ).
    p_value = p_value * ld_erate.
  ENDIF.
ENDFORM.                    " currency_conversion

reward points if it is usefull ..

Girish