Wednesday, January 10, 2007

¿CONVERSION_EXIT_ALPHA_OUTPUT?


La función CONVERSION_EXIT_ALPHA_OUTPUT es muy útil cuando queremos eliminar los ceros de una cadena...Por ejemplo si tenemos 0000012345, nos devuelve 12345...Pero...que pasa cuando tenemos 00000E12345, simple...el resultado va a seguir siendo 00000E12345.

Por lo tanto y puesto que ayer me ví en un problema muy similar, decidí crear un form muy simple -;)

*&----------------------------------------------------------*
*& Form quitar_ceros *
*&----------------------------------------------------------*
* Quitamos les ceros del inicio *
*-----------------------------------------------------------*
FORM quitar_ceros CHANGING t_codigo.

DATA: long TYPE i,
char TYPE c,
cero TYPE c,
counter TYPE i,
new_text(18) TYPE c,
flag TYPE c.

cero = '0'.
long = STRLEN( t_codigo ).

DO long TIMES.
counter = counter + 1.
IF counter EQ long.
EXIT.
ENDIF.
char = t_codigo+counter(1).
IF char NE cero.
CONCATENATE new_text t_codigo+counter(1)
INTO new_text.
flag = 'X'.
ELSE.
IF flag EQ space.
CONTINUE.
ELSE.
CONCATENATE new_text t_codigo+counter(1)
INTO new_text.
ENDIF.
ENDIF.
ENDDO.

t_codigo = new_text.

ENDFORM. "quitar_ceros

Lo que logramos con esto, es obtener el valor E12345

Saludos,

Blag.

1 comment:

Anonymous said...

podrias hacer lo mismo en una linea, con SHIFT variavel LEFT DELETING LEADING '0'