02-16-2010 7:16 AM
hi friends, i am using SPELL_AMOUNT in a smartform. but the output is not correct. if the value is like :
1,4310,551.80
in words : US dollar four milion three hundered ten thousand five hundered fifty one and eighty thousand cents only.
02-16-2010 7:18 AM
part of my code is :
clear : W_T685T.
*data :l_effective like komv-kwert.
clear : l_effective.
loop at IT_T685T into W_T685T.
l_effective = l_effective + W_T685T-kwert.
endloop.
data : amount type P DECIMALS 4.
data :var type P DECIMALS 2.
amount = l_effective.
if ZXEKKO-waers = 'INR'.
CALL FUNCTION 'HR_IN_CHG_INR_WRDS'
EXPORTING
AMT_IN_NUM = amount
IMPORTING
AMT_IN_WORDS = in_words-word
EXCEPTIONS
DATA_TYPE_MISMATCH = 1
OTHERS = 2.
CALL FUNCTION 'ZMMF_HR_IN_CHG_INR_WRDS'
EXPORTING
AMT_IN_NUM = amount
IMPORTING
AMT_IN_WORDS = in_words-word
EXCEPTIONS
DATA_TYPE_MISMATCH = 1
OTHERS = 2.
*end
else.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
AMOUNT = amount "changed amount to var
CURRENCY = ZXEKKO-waers
LANGUAGE = SY-LANGU
IMPORTING
IN_WORDS = in_words
EXCEPTIONS
NOT_FOUND = 1
TOO_LARGE = 2
OTHERS = 3.
endif.
select single * from TCURT into wa_tcurt where spras = sy-langu and WAERS =
ZXEKKO-waers.
condense in_words-word.
condense in_words-decword.
if ZXEKKO-waers <> 'INR'.
translate in_words-word to lower case.
translate in_words-decword to lower case.
translate in_words-word(1) to upper case.
concatenate wa_tcurt-ktext in_words-word 'and' in_words-decword 'only'
into in_words-word
separated by space.
find substring 'cents' in in_words-word.
if sy-subrc = 0.
replace substring 'cents' in in_words-word with space.
endif.
find substring 'only' in in_words-word.
if sy-subrc = 0.
replace substring 'only' in in_words-word with space.
endif.
concatenate in_words-word 'cents' 'only'
into in_words-word
separated by space.
else.
find substring 'Paise' in in_words-word.
if sy-subrc = 0.
replace substring 'Rupees' in in_words-word with 'and'.
else.
replace substring 'Rupees' in in_words-word with space.
endif.
translate in_words-word to lower case.
translate in_words-word+0(1) to upper case.
concatenate 'Rupees' in_words-word 'only' into in_words-word separated
by space.
* translate in_words-word to lower case.
* translate in_words-word(1) to upper case.
endif.
02-16-2010 7:20 AM
i have also tried to change to :
data : amount type P DECIMALS 2.
with this o/p becomes :
us dollar forty thousand one hundered five and five thousand one hundered eighty cents only.