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/04/10, 20:38:16
minerva0112 minerva0112 is offline
Senior Member
 
Fecha de Ingreso: nov 2009
Mensajes: 116
Question ejecutar un alv en proceso de fondo

Se tiene un reporte Z que cuando lo crearon era funcional, pero ultimamente tiene problemas con tiempo de respuesta dando un time out,

Antes de que me asignaran este requerimiento se le informo al usuario que solo podia correr este reporte en proceso de fondo,
pero esto para el usuario no es funcional ya que no trae toda la informacion

se me ha recomendado llevar este reporte de manera que el usuario pueda consignar toda la informacion en proceso de fondo.

favor si me pueden asesorar de como realizar esto?

gracias
Responder Con Cita
  #2  
Viejo 20/04/10, 20:48:37
jcflores jcflores is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: Santiago de Chile
Mensajes: 55
Y se me ocurre generar un archivo excel en algun directorio luego de ejecutado en proceso de fondo el programa.
__________________
Saludos.

Juan Carlos Flores
Consultor ABAP

"Pensar, programar... él solo compila y ejecuta"
Responder Con Cita
  #3  
Viejo 20/04/10, 21:20:23
minerva0112 minerva0112 is offline
Senior Member
 
Fecha de Ingreso: nov 2009
Mensajes: 116
Question



ok, me parece chevere, ya que el usuario realiza algunos subtotales.

pero si este reporte tiene varias opciones, me explico

al ejecutarse aparece un alv con una informacion, este alv tiene unos botones que te realizan otras busquedas, por ejemplo:

boton para reporte de gastos
boton de ingresos
boton de errores y advertencias.

en un proceso de fondo como se llevaria para que me realice todos estos procesos.

gracias
Responder Con Cita
  #4  
Viejo 21/04/10, 07:23:21
juanphys juanphys is offline
Member
 
Fecha de Ingreso: sep 2006
Localización: Spain
Mensajes: 31
Hola,

Si no es posible mejorar la performance del código, otra opción es añadir la función sapgui_progress_indicator dentro del algunos loop que haya en el código (en los que más tiempo de procesamiento gasten).

Esta función muestra en la barra de mensajes el habitual reloj que aveces se ve en algunas transacciones estandar. Este reloj interactúa de tal manera que no daría time out, aunque claro, no mejora el tiempo de procesamiento, para eso mejor analizar posibles mejoras de performance.

Saludos
__________________
Juanphys
SAP CO + ABAP

Responder Con Cita
  #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
  #6  
Viejo 23/04/10, 12:44:16
minerva0112 minerva0112 is offline
Senior Member
 
Fecha de Ingreso: nov 2009
Mensajes: 116
Thumbs up

Gracias a todos por su apoyo, se decidio mejorar el performance del codigo aplicando una reingeniería ya que el reporte actual nunca dio los resultados esperados....



mil gracias

Úlima edición por minerva0112 fecha: 23/04/10 a las 12:58:44.
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 23:28:39.


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