|
#1
|
|||
|
|||
Eliminar no numericos
HOla he hecho un algoritmo k elimina todos los caracteres no numericos de una cadena y mi jefe de dice k lo cambie k tiene k existir algo mas directo o mas sencillo , si alguien lo conoce agradeceria la ayuda.
Saludos. |
#2
|
||||
|
||||
podriamos ver tu codigo de tu funcion y ver si no esta optimizada o no?.
Pero podrias especificar mas lo que quieres y ver si es posible mas sencillo o no. Saludos!!!
__________________
Un Huevon No Inútil Solo di lo que piensas, a la mejor tienes la mejor respuesta.... Si alguien ya lo hizo, copialo y cambiale las variables total es un codigo nuevo..... Si SAP lo hace se puede hacer, no me pidas hacer algo que SAP no ha hecho..... Consultor FI jr/ABAP Sr. |
#3
|
|||
|
|||
tengo una cadena y quiero dejar solo los caracteres numericos eliminando tb los 0's de la izquierda , el campo es it_fichero-cantxpza y todas las variables son enteros.
shift it_fichero-cantxpza left deleting leading '0'. clear: cont , elim , cont_1 , y , i , elim_aux , cont_aux. i = strlen( it_fichero-cantxpza ). DO i times. IF ( it_fichero-cantxpza+cont(1) CN '0123456789' ). **Si es la primera letra se elimina directamente sino DUMP IF ( cont = 0 ) . it_fichero-cantxpza+cont(1) = ''. ELSE. elim_aux = elim + 1. y = cont - elim. cont_aux = y + 1. it_fichero-cantxpza+elim_aux(y) = it_fichero-cantxpza+elim(y) . it_fichero-cantxpza+elim(1) = ''. elim = elim + 1. ENDIF. ENDIF. cont = cont + 1. ENDDO. |
#4
|
||||
|
||||
Mira asi seria mas facil
DATA: i TYPE i, tam TYPE i. anyval = string. CLEAR i. tam = strlen( anyval ). tam = tam - 1. DO tam TIMES. IF ( anyval+i(1) < '0' OR anyval+i(1) > '9' ). CLEAR anyval+i(1). ENDIF. ADD 1 TO i. ENDDO. Condese anyval no-gaps. Con esto limpias todos los que no son numeros saludos
__________________
Un Huevon No Inútil Solo di lo que piensas, a la mejor tienes la mejor respuesta.... Si alguien ya lo hizo, copialo y cambiale las variables total es un codigo nuevo..... Si SAP lo hace se puede hacer, no me pidas hacer algo que SAP no ha hecho..... Consultor FI jr/ABAP Sr. |
#5
|
||||
|
||||
Creo que no hay, y si le colocas asi:
DATA: cadena LIKE it_fichero-cantxpza. clear: i, cadena, cont. i = strlen( it_fichero-cantxpza ). DO i times. IF ( it_fichero-cantxpza+cont(1) CA '0123456789' ). "Ojo es CA CONCATENATE cadena it_fichero-cantxpza+cont(1) INTO cadena. ENDIF. cont = cont + 1. ENDDO. * Eliminando los ceros a la izquierda para evitar el DUMP CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING INPUT = cadena IMPORTING OUTPUT = cadena. * Al final solo igualamos it_fichero-cantxpza = cadena. Espero te sirva ...
__________________
David Carballido Córdova Úlima edición por DavidXD_XD fecha: 25/03/08 a las 16:31:19. |
#6
|
|||
|
|||
Se me ocurre esto.... seguramente hay algo mejor.
DATA : texto TYPE string . DATA : texto_aux TYPE string . DATA : i TYPE i. DATA : offset TYPE i. texto = 'HJS001l2k493400'. i = STRLEN( texto ). DO i TIMES. offset = sy-index - 1. CHECK texto+offset(1) CO '123456789' OR ( texto+offset(1) EQ '0' AND STRLEN( texto_aux ) >= 1 ). CONCATENATE texto_aux texto+offset(1) INTO texto_aux. ENDDO. Saludos. Javier
__________________
Lo importante no es saber sino saber quien es el que sabe |
#7
|
|||
|
|||
Sip como me complico a ver si esto le convence.
Saludos y Gracias |
Herramientas | Buscar en Tema |
Desplegado | |
|
|