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 31/10/12, 15:03:36
Avatar de playa82
playa82 playa82 is offline
Member
 
Fecha de Ingreso: abr 2007
Mensajes: 34
Unhappy Contenido orden de spool a Excel

Hola a tod@s!

Tengo un report que genera un ALV. Si lo lanzo en fondo, se genera una orden de spool con el contenido de dicho ALV. Hasta ahí bien.
Tengo que pasar el contenido de la orden de spool a Excel y lo que he hecho ha sido lo siguiente: he ejecutado la función 'RSPO_RETURN_SPOOLJOB' con el ID de la orden de spool, y luego me he bajado la tabla interna que devuelve con 'GUI_DOWNLOAD'.
Pero me surgen dos problemas:
1) Se me genera un archivo .xls, pero me viene toda la información en bloque, plana, tal y como se ve en la orden de spool. Es decir, no me ajusta las columnas del ALV a las columnas del archivo excel.
2) Si el ALV tiene muchas columnas, la orden de spool no me muestra el ALV completo y de rebote, el excel que se me genera tampoco está completo.

¿Alguna idea? Pq me estoy desesperando y por internet no encuentro nada que me sirva...

Gracias de antemano!
__________________
Yo misma
Responder Con Cita
  #2  
Viejo 02/11/12, 21:07:42
caeco67 caeco67 is offline
Junior Member
 
Fecha de Ingreso: sep 2010
Localización: Caracas
Mensajes: 2
Hola, nunca lo he usado pero deberías probar con la función RSPO_DOWNLOAD_SPOOLJOB a ver si te funciona

Saludos.
Responder Con Cita
  #3  
Viejo 05/11/12, 07:20:23
Avatar de playa82
playa82 playa82 is offline
Member
 
Fecha de Ingreso: abr 2007
Mensajes: 34
Hola!

Gracias por responder. Esa función ya la había probado y tb me lo baja en bloque (todo me lo mete en una única columna de excel).
También probé a hacer los mismos pasos que cuando desde la SP01 bajas una orden a excel, pero no funciona la sentencia estándar "SYSTEM-CALL LOAD LISTLEVEL-STACK INTO STACK." (no rellena la variable STACK), así que ya no se qué mas hacer.

He optado por crearme una tabla interna dinámica con el contenido de la orden, pero mi problema actual es que si el ALV es muy largo y no salen todas las columnas en la orden de spool, en mi excel tp
Alguna idea?
__________________
Yo misma
Responder Con Cita
  #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
  #5  
Viejo 08/11/12, 09:41:42
Avatar de playa82
playa82 playa82 is offline
Member
 
Fecha de Ingreso: abr 2007
Mensajes: 34
Es que el problema que tengo es que no parto de una tabla interna completa.
Si el ALV tiene muchas columnas (es muy ancho) en la spool no sale, y al leer su contenido mi tabla interna está también incompleta
__________________
Yo misma
Responder Con Cita
  #6  
Viejo 08/11/12, 10:21:40
vanesamacri vanesamacri is offline
Senior Member
 
Fecha de Ingreso: jun 2011
Mensajes: 146

Al lanzar procesos de fondo, es posible setear la lontigud del spool de salida para que su contenido no aparezca truncado. ¿De qué manera lo estás ejecutando?
Responder Con Cita
  #7  
Viejo 08/11/12, 12:47:36
manu_lolo27 manu_lolo27 is offline
Member
 
Fecha de Ingreso: mar 2008
Localización: Madrid -España
Mensajes: 90
Hola, creo q lo primero es tener la tabla interna con todas sus columnas, no se porque en la orden spool no te muestra todas las columnas.

Una cosa q se me ocurre es, porque no directamente del report te bajas el excel (aunq luego genere una orden spool cuando lo lanzas en fondo???

con la funcion GUI_DOWNLOAD puedes bajarte el excel perfectamente.

dime tu correo o escribeme a y te envio un ejemplo simple de como bajarte el excel (yo veo facil solucion, espero q sea asi

saludos
Responder Con Cita
  #8  
Viejo 08/11/12, 12:59:28
manu_lolo27 manu_lolo27 is offline
Member
 
Fecha de Ingreso: mar 2008
Localización: Madrid -España
Mensajes: 90
Ahy dejo el ejemplo, ojala te pueda ayudar en algo
Archivos Adjuntos
Tipo de Archivo: txt descarga en excel.txt (2.2 KB, 281 visitas)
Responder Con Cita
  #9  
Viejo 12/11/12, 07:39:37
Avatar de playa82
playa82 playa82 is offline
Member
 
Fecha de Ingreso: abr 2007
Mensajes: 34
Hola a todos, gracias por responder!

La cosa es que tengo que hacer un "programa lanzador de otros programas". Yo desde mi "programa lanzador" lanzo en fondo otro programa que genera un ALV, de manera que se me genera una orden de spool con dicho ALV.
Luego leo esa orden de spool y el usuario puede elegir entre pasar su contenido a PDF o a excel, por eso estoy obligada a leer del spool.

Sin más lo que hago es llamar al report que quiero lanzar en fondo mediante un job, pasándole la variante con la que quiero q se lance:

SUBMIT (p_report)
USING SELECTION-SET p_varna
TO SAP-SPOOL
SPOOL PARAMETERS pri_params
WITHOUT SPOOL DYNPRO
VIA JOB gd_jobname NUMBER gd_jobcount
AND RETURN.

Y los parámetros de impresión de spool que le paso los obtengo mediante la función GET_PRINT_PARAMETERS:

CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
in_parameters = pri_params
mode = 'CURRENT'
no_dialog = 'X'
IMPORTING
out_parameters = pri_params
EXCEPTIONS
invalid_print_params = 1
invalid_archive_params = 2
OTHERS = 3.
IF pri_params-pdest IS INITIAL.
pri_params-pdest = 'LP01'.
pri_params-primm = pri_params-prnew = 'X'.
ENDIF.

¿Alguna idea para que la spool me recoja todo el ALV y no me lo deje a falta de columnas?
__________________
Yo misma
Responder Con Cita
  #10  
Viejo 12/11/12, 14:32:23
vanesamacri vanesamacri is offline
Senior Member
 
Fecha de Ingreso: jun 2011
Mensajes: 146

Revisá los siguientes parámetros de la función GET_PRINT_PARAMETERS: line_count, line_size, layout y default_spool_size. Mediante ellos se pueden setear propiedades de tamaño del spool.
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 16:49:50.


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