If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.
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.
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.
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 ...
Editado por última vez por DavidXD_XD; 25/03/2008, 16:31:19.
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.
Comentario