2007 Jun 20 7:11 AM
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
2007 Jun 20 7:13 AM
HI,
You can use the function module CONVERT_TO_LOCAL_CURRENCY.
Thanks
Naren
2007 Jun 20 7:13 AM
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
2007 Jun 20 7:15 AM
2007 Jun 20 7:16 AM
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
2007 Jun 20 7:16 AM
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.
2007 Jun 20 7:16 AM
2007 Jun 20 7:20 AM
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
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |