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 13/01/09, 12:27:50
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Problema Performance

Buenos dias gente .... tengo una consulta, esta relacionado a Performance, veran tengo un SELECT en el cual me trae todos los movimientos de la MSEG y la MKPF y la guardo dentro de una tabla interna gt_mseg la cual es de tipo HASHED con llaves en mblnr, mjahr y zeile y despues hago lo siguiente


El problema es que el SELECT me bota aproximadamente como un millon de registros y donde se demora el programa es en el LOOP, el LOOP ya lleva muchas horas y no acaba , xfa necesito sus sugerencias o una mejor forma d q el LOOP avance rapido, un saludo a todos !!!
__________________
David Carballido Córdova
Responder Con Cita
  #2  
Viejo 13/01/09, 12:44:30
francesc francesc is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: Barcelona
Mensajes: 58
Podrías probar a hacer un delete antes del loop.
Responder Con Cita
  #3  
Viejo 13/01/09, 14:46:13
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Listo gente ... gracias por la ayuda, hola francesc gracias a ti tbm por la ayuda ... ya pude resolverlo y en efecto era con un DELETE pero dentro del LOOP, derrepente me ekivoco pero siempre es bueno para poder saber q es errado algunas ideas q tienes, ahi va

Como habia declarado la tabla interna gt_mseg como HASHED no permite modificaciones a nivel de campo y tampoco admite la funcionalidad del sy-tabix al momento del LOOP, si entramos al LOOP con una tabla hashed el sy-tabix no se refresca (lo mire y mire dentro del debugg), entonces no pude borrar el registro simplemente usando DELETE gt_mseg INDEX sy-tabix

Para eso simplemente declare una tabla interna normal lt_mseg e hice lo siguiente


En esta parte a diferencia de la otra no realizo doble consulta, como la tabla interna es recontra pesada es muy mala idea realizarle un DELETE WHERE ahi realizo doble consulta y lentea el proceso ... un saludo a todos !!!
__________________
David Carballido Córdova
Responder Con Cita
  #4  
Viejo 13/01/09, 14:57:54
Turu Turu is offline
Junior Member
 
Fecha de Ingreso: mar 2007
Mensajes: 6
Hola,

Lo primero; creo que en tu loop borras el registro al uqe apunta el field-symbol y no sé si eso te puede dar problemas.

Segundo te pongo tu codigo modificado, creo que el resultado es el mismo, a ver si te vale:


LOOP AT gt_mseg ASSIGNING <gfs_mseg> WHERE bwart IN lr_bwart.
IF <gfs_mseg>-matnr = <gfs_mseg>-ummat AND
<gfs_mseg>-charg = <gfs_mseg>-umcha AND
<gfs_mseg>-werks = <gfs_mseg>-umwrk AND
<gfs_mseg>-umlgo IN s_lgort.

append <gfs_mseg> to gt_mseg_aux.
ENDIF.
ENDLOOP.

sort gt_mseg_aux by mblnr mjjahr zeile.
sort gt_mseg by mblnr mjjahr zeile.

LOOP AT gt_mseg_aux into wa_mseg.
IF wa_mseg-matnr = wa_mseg-ummat AND
wa_mseg-charg = wa_mseg-umcha AND
wa_mseg-werks = wa_mseg-umwrk AND
wa_mseg-umlgo IN s_lgort.

DELETE gt_mseg WHERE mblnr = wa_mseg-mblnr
AND mjahr = wa_mseg-mjahr
AND zeile = wa_mseg-zeile.

ENDIF.
ENDLOOP.


Espero que te sirva de ayuda y mejore el rendimiento
__________________
Turu
Responder Con Cita
  #5  
Viejo 13/01/09, 16:04:00
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Hola turu, esa parte si funcionaba, pero cuando paso a real sacaba mas de 1 millon de registros para procesar y consultar, obligado borre el DELETE WHERE para colocarle el DELETE INDEX sy-tabix, tbm no puse los tiempos, yo deje en JOB ese proceso a las 10pm del dia de ayer y cuando eran las 8am todavia seguia en el LOOP, cancele el JOB y con el cambio q hice se barrio el LOOP en 10 seg
__________________
David Carballido Córdova
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 04:33:09.


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