PDA

Ver la Versión Completa : Como Validar que un dato sea numerico


Leonel Espitia Torres
08/11/11, 20:06:11
Buenos compañeros abapers:
El campo de una tabla se utiliza para registrar cantidades, pero debido a que es un campo alfanumérico hay veces que meten datos alfanuméricos (es decir carateres diferentes de números), como hago para validar que el sistema solo tenga en cuenta los datos que sean solo números?. Existe alguna función para esto?. Muchas gracias por su colaboración.

DCErick
08/11/11, 20:28:01
CLICK AQUI

mysmb2
09/11/11, 11:05:35
la función NUMERIC_CHECK te va a servir.

Saludos.

DCErick
09/11/11, 14:43:39
la función NUMERIC_CHECK te va a servir.

Saludos.

Esta función creo que no es tan funcional, cuando el dato tiene deciamales te regresa que es tipo CHAR y no NUMC.

Y la otra es que si el campo solo debe contener números pues cambiarle de tipo y no se complica la vida.

beltsoft
09/11/11, 15:06:08
DCErick es correcto con el manejador de string CO:

CHECK var_1 CO '0123456789'.

Saludos.

Leonel Espitia Torres
09/11/11, 18:25:00
Compañeros ABAPers Gracias por tus respuestas.
En este caso lo pude solucionar con la función NUMERIC_CHECK, pero no entendí como se implementa con CHECK var_1 CO '0123456789'. CHECK es una funcion?, me puedes dar un ejemplo en ABAP de implementacion de esto?. Gracias Leonel

jtristan
10/11/11, 07:52:26
Hola, check es como un if. Si se cumple la condición continúa la ejecución del programa y sino saltaría al punto siguiente. Es decir, si le estás utilizando por ejemplo dentro de un loop, si se cumple, continuaría con la ejecución y sino saltaría al siguiente registro. Si es dentro de una función, si se cumple continuaría con el código de la función y sino pues saldría de la función.

para este caso, comprueba que tu variable sólo contenga los dígitos indicados. Si tiene un valor alfa no seguiría.


Espero haberte ayudado.

Un saludo.

jtristan
10/11/11, 08:10:56
Pensando en como saber si un valor es numérico también se me ha ocurrido esta idea. Es un poco rara pero parece que va. Sería dividir todos los valores entre uno y aquel que no sea numérico nos lanzará una excepción CX_SY_CONVERSION_NO_NUMBER que podemos capturar.

data: numero type i value 15,
caracter(4) type c value 'a23',
decimal(10) type p DECIMALS 2 value '15.25',
valor(10) type p decimals 2.



try.
valor = numero / 1.
valor = decimal / 1.
valor = caracter / 1.
catch CX_SY_CONVERSION_NO_NUMBER.
write 'no es numerico'.
endtry.

DCErick
10/11/11, 16:17:03
Pensando en como saber si un valor es numérico también se me ha ocurrido esta idea. Es un poco rara pero parece que va. Sería dividir todos los valores entre uno y aquel que no sea numérico nos lanzará una excepción CX_SY_CONVERSION_NO_NUMBER que podemos capturar.

data: numero type i value 15,
caracter(4) type c value 'a23',
decimal(10) type p DECIMALS 2 value '15.25',
valor(10) type p decimals 2.



try.
valor = numero / 1.
valor = decimal / 1.
valor = caracter / 1.
catch CX_SY_CONVERSION_NO_NUMBER.
write 'no es numerico'.
endtry.

Si eso podria funcionar, pero controlar una exception le cuesta mas recursos recursos al sistema xD.

JorgeAntonio
10/11/11, 16:32:22
Si es el caso de strings; éste Módulo de Función es muy útil:
NUMERIC_CHECK :D