Ver Mensaje Individual
  #5  
Viejo 21/04/10, 07:38:38
Avatar de ppchico
ppchico ppchico is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Localización: Málaga
Mensajes: 144
Saludos Minerva,

En principio, puedes generar el ALV normal en fondo usando para ello los ALV orientados a objetos (Clase CL_GUI_ALV_GRID) El único matiz, es que debes usar como contenedor la clase CL_GUI_DOCKING_CONTAINER ya que de otra manera no te funcionará. Así, de esta forma a través de la SP01 (Transacción de SPOOL), pueden ver el ALV generado por el report (PERO NO PODRÁN INTERACTUAR CON EL).

En el caso de los botones si lanzas el proceso en fondo, no es posible que el usuario interactue con el ALV, por lo que lo más cómodo sería darle la opción desde la pantalla de selección de realizar las distintas operaciones. Imagina que lo que estás mostrando son pedidos, y que tienes las opciones de borrarlos, contabilizarlos, darles salida etc... pues en este caso, puedes poner un RADIO BUTTON con las opciones de solo mostrar información, de contabilizar los pedidos, de borrarlos, de darles salida... de esta forma, una vez que obtengas la información, si el usuario eligió la contabilización directa, no se muestra la información, sino que se contabilizan todos los pedidos obtenidos, y directamente se muestra el LOG final.

En principio eso sería lo más cómodo. Por otro lado, te aconsejo que hagas un estudio de la selección de datos, de manera que optimices todo el código para intentar que muestre la información lo antes posible, incluso puedes meter la selección de datos en un módulo de funciones que devuelva la información. Intenta eliminar SELECT dentro de SELECT, SELECT dentro de LOOP, usa mejor el FOR ALL ENTRIES y después un READ TABLE... incluso en ocasiones los INNER JOINS pueden ser perjudiciales. Puedes probar las optimizaciones de código a través de la transacción SE30 pulsando sobre el botón TRIPS & TRICKS puedes comparar dos códigos, y así ver cual tiene mejor tiempo de ejecución etc.

Suerte con tu desarrollo.
Un Saludo,
Javier.
Responder Con Cita