PDA

Ver la Versión Completa : Campo numérico


vstarke
09/03/10, 15:52:28
buenas!.. a ver si me pueden ayudar,

quiero validar que un campo sea absolutamente numérico sin "." ni "," sólo números... espero y me puedan ayudar gracias....

Neo_25
09/03/10, 15:57:17
A ver si te vale esto:

DATA: lv_digitos TYPE char10 VALUE '0123456789',
lv_comprobar TYPE char128 VALUE '556'.

DATA: lv_error TYPE char1.

CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS'
EXPORTING
dmzei = '.'
dtype = 'DEC'
efeld = lv_comprobar
imp_decimals = '0'
IMPORTING
error = lv_error.

IF lv_error = 'X'.
"error, la variable tiene letras
ELSE.
"ok, la variable sólo tiene números
ENDIF.

vstarke
09/03/10, 16:08:27
gracias por responder.. pero eso funciona sólo hasta validar con "." si pongo "," pasa... hay laguna forma de validar esto sin tenerque llamar al método convert más de dos veces?

Alfredosite
09/03/10, 16:32:53
gracias por responder.. pero eso funciona sólo hasta validar con "." si pongo "," pasa... hay laguna forma de validar esto sin tenerque llamar al método convert más de dos veces?

Puede aplicar este algoritmo:

PARAMETERS: p_cadena TYPE string."Parametro y/o valor de campo a tratar(alfanumerico)

DATA: gv_out TYPE string,"Salida luego del tratamiento(quitar valores alpha)
gv_int TYPE i, "Captura los valores numéricos
gv_cont TYPE i, "Contador de recorrido de cadena
gv_char1 TYPE c.

RANGES: lr_num FOR gv_char1.

START-OF-SELECTION.

lr_num-sign = 'I'.
lr_num-option = 'BT'.
lr_num-low = '0'.
lr_num-high = '9'.
APPEND lr_num.

gv_cont = STRLEN( p_cadena ).

DO gv_cont TIMES.
IF p_cadena+gv_int(1) IN gr_num.
CONCATENATE gv_out p_cadena+gv_int(1) INTO gv_out .
ENDIF.
ADD 1 TO gv_int.
ENDDO.

WRITE: gv_out .

karinastolen
13/05/11, 21:36:33
Puedes utilizar la función:
NUMERIC_CHECK:rolleyes:

grandnomade
04/07/13, 22:06:31
buenas!.. a ver si me pueden ayudar,

quiero validar que un campo sea absolutamente numérico sin "." ni "," sólo números... espero y me puedan ayudar gracias....

Hola, puedes usar.

check lv_campo CO '0123456789 '.

no olvidar el espacio en blanco después del 9.

Saludos