Application Development 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: 

Conversion character value to numerical from dynpro

Former Member
0 Kudos

Hi,

I look for any function( instead to write myself) that

convert numerical value received by FM DYNP_VALUES_READ.

Anyhow it's depend from user definitions(123,456.000 or

123.456,000 ...)

Thank you very much

Irena

1 ACCEPTED SOLUTION

LucianoBentiveg
Active Contributor
0 Kudos

May be this helps:

FORM convierte USING p_cadena

CHANGING p_numero.

DATA: w_dcpfm LIKE usr01-dcpfm,

l_basebase TYPE p DECIMALS 3,

l_basepunto TYPE p DECIMALS 3,

long TYPE i,

rest TYPE i.

SELECT SINGLE dcpfm INTO w_dcpfm

FROM usr01 WHERE bname = sy-uname.

IF w_dcpfm = space.

TRANSLATE p_cadena USING '. '.

TRANSLATE p_cadena USING ',.'.

CONDENSE p_cadena NO-GAPS.

ELSEIF w_dcpfm = 'X'.

TRANSLATE p_cadena USING ', '.

CONDENSE p_cadena NO-GAPS.

ELSEIF w_dcpfm = 'Y'.

TRANSLATE p_cadena USING ',.'.

CONDENSE p_cadena NO-GAPS.

ENDIF.

TRANSLATE p_cadena USING '.#'.

SEARCH p_cadena FOR '#'.

IF sy-subrc = 0.

l_basebase = p_cadena(sy-fdpos).

long = strlen( p_cadena ).

rest = long - sy-fdpos.

ADD 1 TO sy-fdpos .

l_basepunto = p_cadena+sy-fdpos(rest).

IF l_basepunto NE 0.

l_basepunto = l_basepunto / 1000.

ENDIF.

p_numero = l_basebase + l_basepunto.

ELSE.

p_numero = p_cadena.

ENDIF.

TRANSLATE p_cadena USING '#.'.

ENDFORM. " convierte

4 REPLIES 4

LucianoBentiveg
Active Contributor
0 Kudos

May be this helps:

FORM convierte USING p_cadena

CHANGING p_numero.

DATA: w_dcpfm LIKE usr01-dcpfm,

l_basebase TYPE p DECIMALS 3,

l_basepunto TYPE p DECIMALS 3,

long TYPE i,

rest TYPE i.

SELECT SINGLE dcpfm INTO w_dcpfm

FROM usr01 WHERE bname = sy-uname.

IF w_dcpfm = space.

TRANSLATE p_cadena USING '. '.

TRANSLATE p_cadena USING ',.'.

CONDENSE p_cadena NO-GAPS.

ELSEIF w_dcpfm = 'X'.

TRANSLATE p_cadena USING ', '.

CONDENSE p_cadena NO-GAPS.

ELSEIF w_dcpfm = 'Y'.

TRANSLATE p_cadena USING ',.'.

CONDENSE p_cadena NO-GAPS.

ENDIF.

TRANSLATE p_cadena USING '.#'.

SEARCH p_cadena FOR '#'.

IF sy-subrc = 0.

l_basebase = p_cadena(sy-fdpos).

long = strlen( p_cadena ).

rest = long - sy-fdpos.

ADD 1 TO sy-fdpos .

l_basepunto = p_cadena+sy-fdpos(rest).

IF l_basepunto NE 0.

l_basepunto = l_basepunto / 1000.

ENDIF.

p_numero = l_basebase + l_basepunto.

ELSE.

p_numero = p_cadena.

ENDIF.

TRANSLATE p_cadena USING '#.'.

ENDFORM. " convierte

0 Kudos

Thank you very much,but I think your code doesn't

work perfectly , in any case as idea it's good

Best regards.

former_member182371
Active Contributor
0 Kudos

Hi irena,

have a look at FM:

HRCM_STRING_TO_AMOUNT_CONVERT

HRCM_AMOUNT_TO_STRING_CONVERT

Best regards.

0 Kudos

Thank you very much ,

but I think this function ,1-st,

doesn't work

Best regards.