MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 25/03/08, 15:16:12
nachoregi nachoregi is offline
Member
 
Fecha de Ingreso: jul 2007
Mensajes: 72
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.
Responder Con Cita
  #2  
Viejo 25/03/08, 15:20:38
Avatar de robert_milan
robert_milan robert_milan is offline
Senior Member
 
Fecha de Ingreso: jun 2006
Localización: Mexico, DF
Mensajes: 315
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.
Responder Con Cita
  #3  
Viejo 25/03/08, 15:28:49
nachoregi nachoregi is offline
Member
 
Fecha de Ingreso: jul 2007
Mensajes: 72
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.
Responder Con Cita
  #4  
Viejo 25/03/08, 15:52:57
Avatar de robert_milan
robert_milan robert_milan is offline
Senior Member
 
Fecha de Ingreso: jun 2006
Localización: Mexico, DF
Mensajes: 315
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.
Responder Con Cita
  #5  
Viejo 25/03/08, 16:06:49
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
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.
Responder Con Cita
  #6  
Viejo 25/03/08, 16:08:01
nachoregi nachoregi is offline
Member
 
Fecha de Ingreso: jul 2007
Mensajes: 72
Sip como me complico a ver si esto le convence.

Saludos y Gracias
Responder Con Cita
  #7  
Viejo 25/03/08, 16:23:51
abapconsultoria abapconsultoria is offline
Senior Member
 
Fecha de Ingreso: ene 2008
Mensajes: 101
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 13:18:51.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web