MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   REPLACE con Tabulacion y espacios en blanco (foro/showthread.php?t=38363)

andresf02 20/08/10 15:24:04

REPLACE con Tabulacion y espacios en blanco
 
Buenos dias.


Tengo una tabla interna (no creada por mi aclaro) con n columnas de datos distintos (Nombres, codigos, valores, etc). La tabla esta diseñada para que entre cada valor, va una columna con algun caracter especial.

Ejemplo: t_dfile

Codigo|Espacio1-|-Nombre-|Espacio2--|valor--|ESPACIO3|
00001|TABULADO|IPSA S.A.|TABULADO|100.52|TABULADO|
00002|TABULADO|COLP S.A.|TABULADO|800.00|TABULADO|

Cada uno de estos registro los estoy copiando a una cadena de tamaño 100 caracteres ti_plano.

Es decir, en la cadena quedan todos los datos de un registro concatenados

ti_plano = t_dfile.


hago un CONDENSE a ti_plano para eliminar los espacios en blanco que quedan cuando el valor no usa toda la capacidad del campo. Por ejmplo el nombre del cliente es un CHAR40 y la cadena IPSA S.A. solo ocupa 9 caracterres de los 40.

El problema es que al generar un archivo plano (modo de ejecucion online), para algunos datos (sobre todo los que son de 1 solo digito, aunque la capacidad del campo origial era de mas caracteres), queda el registro de la siguiente forma:


[Valor][Espacio en blanco][Tabulado][Valor][Espacio en blanco][Tabulado]...

Pero para otros datos como el nombre del cliente si queda como lo necesito:

[Valor][Tabulado][Valor]...


Si hago un CONDENSE con NO-GAPS, queda perfecto, pero como tengo el nombre de los clientes, el NO-GAPS no me sirve.



Intenté lo siguiente:


Es decir, estoy concatenando espacios en blanco antes y despues del tabulado con el fin de hacer los siguiente:



En el debugging la cadena ti_plano antes de los replaces (pero despues del condence) se ve asi:


Donde el # representa al TABULADO

Las cadenas de reemplazo se ven:

Si ven el valor en Hexa, el espacio en blanco es representado por un 2000

El problema es que al parecer el


no funciona, el programa no reemplaza un [Espacio][Tabulado] por [Tabulado] (200009000 por 0900 en hexa)

y el resultado final en el archivo plano es:



Noten que para el caso del nombre del cliente, no aparece ese espacio al final antes del tabulado, Asi necesito que quede para todos los datos. Lo mismo que un Condense NO-GAPS pero sin afectar el nombre del cliente.


Gracias!

aldape 23/08/10 13:52:57

quiza este ejemplo te puede servir...


data t1(10) type c.
data t2(20) type c.
data t3(10) type c.

data r(50) type c.

t1 = '456554.54'.
t2 = 'NOMBRE DE CLIENTE'.
t3 = 'PRUEBA'.
concatenate t1 '#' t2 '#' t3 into r.
write r.

Genera este resultado:



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

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