5
« en: 21 de Febrero de 2009, 01:56:00 pm »
Buenas,
tengo el siguiente problema que no se como solventar, a ver si alguien me puede ayudar.
Quiero construir un archivo de texto en formato txt, para ello uso la funcion WS_DOWNLOAD que recibe una tabla interna con la que te construye el txt.
Yo utilizo 2 tablas internas iguales con la unica diferencia que un campo es int y en la otra es char, puesto que tengo que hacer collects y una vez echo los collects lo vuelco en la otra.
ejem:
BEGIN OF t1 OCCURS 0,
.......................
c1 type i,
c2(6) type c,
END OF t1.
BEGIN OF t2 OCCURS 0,
.......................
c1(5) type C,
c2(6) type c,
END OF t1.
Una vez hago los collects en t1 igualo los campos con t2:
........
t2.c1 = t1.c1.
como el siguiente campo de la tabla es un int y ademas en las especificaciones del programa se pide que su contenido aparezca
alineado a la derecha y tenga 5 posiciones utilizo un write para pasarlo a t2 que es un char de 5:
write t1.c2 to t2.c2 RIGHT-JUSTIFIED ("no me acuerdo si iba así porque no tengo delante el codigo pero para que os hagais una idea").
EL caso es que cuando saca el archivo a txt, como el campo c1 de la tabla t2 es un char de 5 me lo tendría que poner en la 5 posición ya que lo he pedido alineado a la derecha.
suponiendo que el campo c1 de t2 valiera 15 me lo deberia de sacar así:
1 2 3 4 5 -> posiciones
1 5 -> contenido
el caso es que me lo saca asi:
1 2 3 4 5 -> posiciones
1 5 -> contenido
con lo cual el archivo me sale mal formateado ya que entre el campo c1 y el campo c2 me deja el espacio en blanco.
alguien sabe como solucionar el problema??, ya que el archivo txt debe tener para cada campo en una posicion determinada ya que luego se usa en otro programa para leerlo y debe de sacar los valores de unas posiciones determinadas
Pudiera ser que el problema estuviera en el write??
hay otra forma de hacerlo??
Muchas gracias!
saludos