PDA

Ver la Versión Completa : Formato de Edicion


CRISTINO.GARCIA
11/01/13, 18:41:37
Hola a Todos

Tengo un problema en un programa el cual al cargar un campo cuya data es un monto y dar el resultado con decimales da un stop ya que me indica "Entrada solo en la forma --,--,--,--.-- " y debo cambiar manualmente el monto colocandole en vez de coma como punto decimal el punto para que procese. Me meti por la su01 y le cambie al usuario que ejecuta dicho programa y le coloque como separador decimal el punto y asi si se ejecuta pero el usuario no quiere estar cambiando su pefil cada vez que use ese programa quiere que desde el programa verifique que si el resultadoi da decimal le convierta ese valor de "," a ",". Me podrian ayudar.

Muchas Gracias

Saludos

Cristino

Mari.Sole
14/01/13, 11:57:16
Hola CRISTINO.GARCIA,
Lo que podrías hacer antes de visualizar el monto en tu programa, detectes cual es la configuracion del usuario y desde el código hagas la conversión del separador "," o "." según necesites.
Para ello puedes hacer la siguiente selección de datos:

SELECT SINGLE dcpfm
FROM usr01
INTO var_dcpfm
WHERE bname = sy-uname.

En la variable VAR_DCPFM te devuelve un valor de 3 posibles (espacio en blanco, X o Y): Te paso a lo que equivale cada valor.

1.234.567,89
X 1,234,567.89
Y 1 234 567,89


a partir entonces de que valor obtengas deberás convertir tu importe antes de mostrarlo en tu programa para que no te de error.

Espero te sirva.

Saludos.

CRISTINO.GARCIA
14/01/13, 12:59:02
Hola Mari

Muchas Gracias por tu informacion. Esto lo puedo aplicar a un bacth input, Y este campo que trae esos (blanco, X, Y) de que tipo se declara?

Nuevemanete Muchas Gracias

Saludos

Cristino

Hola CRISTINO.GARCIA,
Lo que podrías hacer antes de visualizar el monto en tu programa, detectes cual es la configuracion del usuario y desde el código hagas la conversión del separador "," o "." según necesites.
Para ello puedes hacer la siguiente selección de datos:

SELECT SINGLE dcpfm
FROM usr01
INTO var_dcpfm
WHERE bname = sy-uname.

En la variable VAR_DCPFM te devuelve un valor de 3 posibles (espacio en blanco, X o Y): Te paso a lo que equivale cada valor.

1.234.567,89
X 1,234,567.89
Y 1 234 567,89


a partir entonces de que valor obtengas deberás convertir tu importe antes de mostrarlo en tu programa para que no te de error.

Espero te sirva.

Saludos.

Mari.Sole
14/01/13, 13:28:21
CRISTINO.GARCIA,
El valor que devuelve la selección de datos antes citada es un carácter, con que lo declares como CHAR1 es suficiente. Y si se puede usar en un Batch Input, todo esto debes realizarlo antes de pasar los valores a la dynpro y campo correspondiente de la misma.

Saludos.

CRISTINO.GARCIA
16/01/13, 16:09:42
Muchas Gracias ya resolvi con lo que me indicaste.

Saludos

Cristino

CRISTINO.GARCIA,
El valor que devuelve la selección de datos antes citada es un carácter, con que lo declares como CHAR1 es suficiente. Y si se puede usar en un Batch Input, todo esto debes realizarlo antes de pasar los valores a la dynpro y campo correspondiente de la misma.

Saludos.

mauro_ARG
19/01/13, 12:55:14
REPORT y_test.

PARAMETERS p_param(10) TYPE c OBLIGATORY.

DATA: l_numero TYPE esecompavg.

START-OF-SELECTION.
* Esta funcion chequea si el dato puede puede ser convertido a nro.
CALL FUNCTION 'CATS_NUMERIC_INPUT_CHECK'
EXPORTING
input = p_param.

IF ( sy-subrc EQ 0 ).
"Si el campo tiene caracteres validos para convertirlo a un nro,
"lo convertimos con esta funcion.
CALL FUNCTION 'C14W_CHAR_NUMBER_CONVERSION'
EXPORTING
i_string = p_param
IMPORTING
e_dec = l_numero.
IF ( sy-subrc EQ 0 ).
"en l_numero esta el dato convertido a formato nro de SAP.
ELSE.
"Dió error la conversion.
ENDIF.
ELSE.
"Dió error el chequeo, hay caracteres inválidos.
ENDIF.