hola, mi consulta es esa, como saber si una variable string es numerica? porque tengo que hacer una distincion entre si es solo numero o si son letras, probe varias funciones y un metodo que encontre pero nada, espero me ayuden, gracias
saber si es numerico
Colapsar
X
-
-
con ese metodo que pone ahi como solucion no me anduvo, lo hice con esta funcion:
CALL FUNCTION 'NUMERIC_CHECK'
EXPORTING
string_in = valor
IMPORTING
* string_out =
htype = v_tipo
EXCEPTIONS
OTHERS = 1.
IF v_tipo EQ 'NUMC'.
"aca entra si la variable es numerica
ELSE.
""
ENDIF.
igual graciasComentario
-
v_len = 12.
v_pos = 0.
DO v_len TIMES.
p1 = variable+v_pos(sy-tabix).
ADD 1 TO v_pos.
IF p1 CO '0123456789'.
paso = '0'.
ELSE.
paso = 'X'.
ENDIF.
ENDDO.
*** Si es un número lo agrego a la tabla de órdenes secundarias
IF paso = '0'.
**** Variable Es numérica ****
ENDIF.
endif.Comentario
-
Esta rutina es mejorable, ya que puede ocurrir que el último caracter sea numérico, y considere toda la variable como tal.Originalmente publicado por nievesmpv_len = 12.
v_pos = 0.
DO v_len TIMES.
p1 = variable+v_pos(sy-tabix).
ADD 1 TO v_pos.
IF p1 CO '0123456789'.
paso = '0'.
ELSE.
paso = 'X'.
ENDIF.
ENDDO.
*** Si es un número lo agrego a la tabla de órdenes secundarias
IF paso = '0'.
**** Variable Es numérica ****
ENDIF.
endif.
Para evitar esto, podría ser:
v_len = 12.
v_pos = 0.
DO v_len TIMES.
p1 = variable+v_pos(sy-tabix).
ADD 1 TO v_pos.
IF p1 CN '0123456789'.
paso = 'x'.
ENDIF.
ENDDO.
*** Si es un número lo agrego a la tabla de órdenes secundarias
IF paso is initial.
**** Variable Es numérica ****
ENDIF.
endif.Comentario
Comentario