Ver Mensaje Individual
  #4  
Viejo 05/11/12, 09:32:02
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
Para crear el excel formateado y que no te lo meta todo en una columna creo que habria 3 posibles caminos

Bueno, lo primero voy a suponer que en tu programa en algun momento tendras una tabla interna con los datos que quieres volcar en el excel

1.- Puedes ir recorriendo cada linea de la tabla y a su vez cada campo y mediante objetos OLE ir metiendo cada valor en una celda del excel, hay muchos ejemplos de manejo de objetos excel mediante OLE pero es complicado

2.- Otra cosa que podria probar es lo siguiente, tienes que implementar el codigo necesario para recorrer la linea y a su vez cada campo de la linea, ir concatenando los valores de los campos en una variable string separandolos mediante un tabulador y asi obtener una tabla en la que cada linea sera un string que tiene todos los valores concatenados y separados por tabulador, despues esa tabla la podrias descargar a fichero mediante la GUI_DOWNLOAD, prueba a bajarlo como ASC y ponerle extension .xls al nombre del fichero, te dejo un codigo de prueba para que te hagas a la idea de lo que quiero decir

data: lv_string type string.
data: lt_string type table of string.
field-symbols: <campo> type any.

loop at tabla into linea.

clear: lv_string.

do.

assign component sy-index of structure linea to <campo>.

if sy-subrc is initial.

concatenate lv_string CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB <campo> into lv_string.

else.
exit.
endif.

append lv_string to lt_string.

enddo.

endloop.

Con esto al final tendrias una tabla con todos los campos concatenados y separados por tabulador

3.- La ultima opcion seria descargarte la tabla a fichero igual que lo haces ahora, y te lo deja en un excel pero todo metido en una columna, lo que harias en tu programa en que despues de descargar el fichero a excel ejecutarias una macro que seria la que te formatearia el excel y convertiria lo que hay en una columna a varias columnas

Para ejecutar una macro de excel el codigo mas o menos seria

INCLUDE OLE2INCL.

data: go_Excel type ole2_object.

CREATE OBJECT go_Excel 'EXCEL.APPLICATION'.

CALL METHOD OF go_Excel 'RUN'
EXPORTING #1 = "NombredelaMacro".

La macro tendrias que crearla en el libro de macros personales para que este disponible en todos los libros de excel

Para la grabacion de la macro tendrias que utilizar la utilidad de texto a columnas de excel
Responder Con Cita