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 20/08/10, 15:24:04
andresf02 andresf02 is offline
Senior Member
 
Fecha de Ingreso: nov 2009
Mensajes: 190
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!

Úlima edición por andresf02 fecha: 20/08/10 a las 15:28:13.
Responder Con Cita
  #2  
Viejo 23/08/10, 13:52:57
aldape aldape is offline
Senior Member
 
Fecha de Ingreso: dic 2007
Mensajes: 204
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:

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 10:05:29.


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