¿CONVERSION_EXIT_ALPHA_OUTPUT?
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.
VLozano Said,
Febrero 2, 2007 @ 2:13 am
No serÃa más sencillo algo del tipo:
*— sin garantÃa de funcionamiento, un esbozo
DATA: l_len TYPE i,
l_pos TYPE sy-index.
l_len = STRLEN( texto ).
DO l_len TIMES.
l_pos = sy-index.
IF texto+lpos(1) NE cero.
EXIT.
ELSE.
texto+lpos(1) = space.
ENDIF.
ENDDO.
CONDENSE texto.
* —–hasta aquà el código
El DO n TIMES ya controla que no nos salgamos del texto, y el IF inicial ya nos echa del bucle cuando la posición no es cero (podrÃa incluirse el blanco por si acaso).
Estamos sustituyendo los ceros iniciales por espacios, y el CONDENSE los eliminará, dejando ese E1234 que buscamos.
¿O la estoy cagando en alguna parte?
Blag Said,
Febrero 2, 2007 @ 4:42 am
Hola VLozano:
Tu idea es bastante bueno y un poco más corta que la mÃa -:) Le hice unos pequeños ajustes y aquà está….Gracias por la colaboración!!!
REPORT ZPRUEBA.
DATA: L_LEN TYPE I,
LPOS TYPE SY-INDEX,
CERO(1) TYPE C VALUE 0.
DATA: TEXTO TYPE STRING.
TEXTO = ‘00000E123450′.
L_LEN = STRLEN( TEXTO ).
DO L_LEN TIMES.
LPOS = SY-INDEX - 1.
IF TEXTO+LPOS(1) NE CERO.
EXIT.
ELSE.
REPLACE ‘0′ WITH SPACE
INTO TEXTO.
ENDIF.
ENDDO.
CONDENSE TEXTO.
WRITE:/ TEXTO.
Saludos,
Blag.
vlozano Said,
Febrero 12, 2007 @ 2:47 am
estamos en el REPLACE… no estoy muy seguro de que esa sintaxis sea la mejor… primero pq es un método obsoleto (según la documentación de SAP en la 4.6), y segundo pq no tenemos control sobre las posiciones que reemplazará…
el texto+posición(posiciones) es una cabronada de leer, pero te aseguras que a no ser que los chicos de walldorf cambien todo el sistema de sub-cadenas, siga funcionando ad aeternum…
otra opción es utilizar el REPLACE SECTION para controlar las posiciones a reemplazar
échale un vistazo a la documentación y me cuentas (que no pienso hacer pruebas en horarios de trabajo, y en casa el ordenador está para jugar)