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

Conversion character value to numerical from dynpro

Former Member
0 Likes
657

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
Read only

LucianoBentiveg
Active Contributor
0 Likes
615

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

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

4 REPLIES 4
Read only

LucianoBentiveg
Active Contributor
0 Likes
616

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

Read only

0 Likes
615

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

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

Best regards.

Read only

former_member182371
Active Contributor
0 Likes
615

Hi irena,

have a look at FM:

HRCM_STRING_TO_AMOUNT_CONVERT

HRCM_AMOUNT_TO_STRING_CONVERT

Best regards.

Read only

0 Likes
615

Thank you very much ,

but I think this function ,1-st,

doesn't work

Best regards.