PDA

Ver la Versión Completa : remplazar '.' en un tipo quan


tate
18/05/10, 12:06:33
Hola necesito remplazar '.' por ',' en un dato de tipo quan.

Uso el replace pero no puedo dado que es para tipo char.

Alguien sabria como podria hacerlo.

Un saludo.

emerson.tosin
18/05/10, 12:10:56
Se la substituición és de QUAN para CHAR. És solo utilizar el comando "WRITE".
Ejemplo: WRITE v_quan TO v_char.

espero que ayude!

tate
18/05/10, 14:16:19
El caso que yo tengo esto

var1 tipo quan (13,3)
var2 tipo int1 (3)

move var1 to var2.

El caso esque si var1 es 1,123 no da dump y va bien, pero si es 1.123 me da dump.

Entonces no se como hacer para que sea ',' pero con replace no puedo.

Lo que me dices no puedo ya que que es un INT1 y seguiria con la coma.

DavidXD_XD
18/05/10, 14:58:24
Hola Tate ... primero q nada la configuracion de tu usuario esta predeterminado para usar la coma como separador de miles, ahora lo que necesariamente se tiene que hacer es:

1. Crear un tipo char para pasar esa cantidad
2. Usar la BAPI BAPI_USER_GET_DETAIL para saber la configuracion de usuario y ver si esta usando el '.' o ',' como separador de miles, eso lo ves en el campo DEFAULTS-DCPFM
3. Si es . no realizar REPLACE sobre la variable de tipo CHAR, y si lo es realizar el REPLACE con la ,
4. Una vez que este modificado el valor de tipo char con la cantidad puedes realizar el pase a la variable de tipo QUAN

Espero te ayude :D

nievesmp
18/05/10, 15:01:23
El caso que yo tengo esto

var1 tipo quan (13,3)
var2 tipo int1 (3)

move var1 to var2.

El caso esque si var1 es 1,123 no da dump y va bien, pero si es 1.123 me da dump.

Entonces no se como hacer para que sea ',' pero con replace no puedo.

Lo que me dices no puedo ya que que es un INT1 y seguiria con la coma.

Escribelo hacia una variable tipo char con un write (write var_quan to var_char) sólo con eso, ya lo pasa con coma, despues lo devuelves a la var_quan. O bien, carga el dato inicialmente en un char, aplicas el REPLACE y luego lo mueves hacia el tipo quan.

tate
18/05/10, 15:06:56
DavidXD_XD ese campo me viene en blanco.

No habria otra manera de poder cambiar el . por la , es lo q peta.

tate
18/05/10, 15:11:05
esto es lo que realizo y no compila

data var(17) TYPE c.
** wa_materiales-cantidad. ES quant 13 con 3 decimales
write wa_materiales-cantidad to var.
REPLACE '.' WITH ',' INTO var . "wa_materiales-cantidad.
CONDENSE var NO-GAPS.
WRITE var to wa_materiales-cantidad.



ERROR QUE ME DA AL COMPLIAR <--"WA_MATERIALES-CANTIDAD" must be a character-type field (data type C,
N, D, or T) . "INTERFACE". by "INTERFACE". by "INTERFACE". "INTERFACE".
by "INTERFACE". by "INTERFACE".

DavidXD_XD
18/05/10, 15:18:43
Pero ahi la variable de wa_materiales-cantidad ya tiene un valor

write wa_materiales-cantidad to var.

La idea es q lo tengas inicialmente en un valor de tipo var, y tbm por lo que veo lo estas llenando en un proceso de UPLOAD o de interfaces ... como inicialmente se esta llenando esa variable???

tate
18/05/10, 16:32:54
es una funcion, que se le pasa la cantidad.

y cuando le iguala al int1 es cuando peta.

lo paso a var, que es de char, y cambio el punto por la coma, pero luego, ya no puedo pasar var al campo original cantidad, o al que quiero igualar que es de tipo int1