MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Problema con conversión de tipos (foro/showthread.php?t=46835)

davidr 23/11/11 07:21:00

Problema con conversión de tipos
 
Hola a todos,

tengo un problema con el campo stko-base_quan. Cuando lo utilizo en abap sucede que si, por ejemplo, tiene un valor 1.345 al usarlo en abap el punto de los miles lo toma como el separador de decimales.

El camplo es un quan(13, 3), lo podéis ver en la misma tabla.

¿Cómo puedo conseguir que me lo coja como un separador de miles y no de decimales?

Gracias de antemano.
Saludos.

crounly 23/11/11 09:07:35

He...creo que te estas equivocando....

Una cosa es como se muestra la información ( la ',' o '.' como separador decimal se configura en el perfil del usuario ) y otra es la representación interna de los datos, donde SIEMPRE es el '.' separador decimal y no hay mas.

Otra cosa es que pintes la variable en una variable de carcteres

WRITE <VAR_NUMERICA> TO <VAR_CARACTERES> UNIT <CAMPO_QUAN>.

Y luego uses el TRASLATE <VAR_CARACTERES> USING ',.' .

Lo mismo al revés, si tienes '1000,98' porque tu usuario tiene la coma como decimal , pues TRASLATE <VAR> USIGN ',.' para que lo convierta en '1000.98' y eso a la variable numerica.

davidr 23/11/11 14:14:53

Problema con conversión de tipos
 
Crounly,

el problema que tengo no es a la hora de pintar la variable sino cuando opero con ella.
Concretamente tengo lo siguiente:
mat-unidad = ( t_stpo-comp_qty / t_stko-base_quan ) * t_stko-kausfb.

Cuando estoy depurando el programa el contenido de los campos es el siguiente:
t_stpo-comp_qty = 7,220
t_stko-base_quan = 100
t_stko-kausfb = 77.66

Los campos t_stpo-comp_qty y t_stko-base_quan son de tipo quan(13, 3) y el t_stko-kausfb es de tipo decimal (5, 3).

El dump que me da cuando intento hacer la operación es:
CX_SY_CONVERSION_NO_NUMBER

"The program attempted to interpret the value " 7,220 " as a number, but
since the value contravenes the rules for correct number formats,
this was not possible."

Si se te ocurre cualquier idea será bienvenida.

Muchas gracias.

crounly 23/11/11 16:12:41

ese t_stpo-comp_qty = 7,220, seguro que es una variable de caracter
Y la coma, te aparece por el perfil de usuario ( SU01 -> pestaña valores fijos )

Tendras que hacer un TRALATE t_stpo-comp_qty USING ',.' para sustituir la coma decimal por punto.

Prueba y nos cuentas

Suerte

davidr 24/11/11 07:56:50

Problema con conversión de tipos
 
Buenas,

pues al final lo he solucionado usando la función
call function 'RS_CONV_EX_2_IN_NO_DD'
exporting
input_external = stko-base_quan
importing
output_internal = menge_cab
exceptions
error_message = 100
others = 200.

donde menge_cab lo tengo declarado como:
data: menge_cab type p decimals 3.

Muchas gracias por la ayuda.

Saludos.


Husos Horarios son GMT. La hora en este momento es 03:41:52.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web