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/12/08, 02:10:24
jalopez jalopez is offline
Junior Member
 
Fecha de Ingreso: ago 2007
Localización: Medelín Colombia
Mensajes: 15
Recorrido de tabla con alto volumen de registros

S.O.S.

Necesito eliminar registros de un tabla que actualmente posee 500.000 registros, el problema es que para eliminar un registro se debe verificar en otra tabla que el registro no exista. La segunda tabla posee 2.000.000 de registros. Actualmente lo estoy realizando así:

LOOP AT it_ztar_saldo_factu ASSIGNING <fs_ztar_saldo_factu>.
READ TABLE it_ztar_detalle_aux ASSIGNING <fs_ztar_detalle_aux>
WITH KEY nro_factura = <fs_ztar_saldo_factu>-nro_factura
sociedad = <fs_ztar_saldo_factu>-sociedad.
IF sy-subrc EQ 0.
<fs_ztar_saldo_factu>-compensada = 'B'. "Se marca el registro a borrar
ENDIF.
ENDLOOP.
DELETE it_ztar_saldo_factu WHERE compensada = 'B'. "Se eliminan los registros

Aun utilizando FIELD-SYLBOLS, este proceso se esta muriendo.

¡Alguien que me de una luz!
Responder Con Cita
  #2  
Viejo 20/12/08, 12:58:26
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Hola, yo tenia un problema similar, se demoraba algo de 30 min en recorrer todo el LOOP y modificar el campo, pero ahora se demora 10 seg , lo hice con tablas hashed, esas son un tipo de tablas internas pero de solo consulta, deberias declarar la tabla interna it_ztar_saldo_factu de la siguiente manera


Trata de probarlo con eso y nos cuentas como te fue ...
__________________
David Carballido Córdova
Responder Con Cita
  #3  
Viejo 20/12/08, 16:17:21
jalopez jalopez is offline
Junior Member
 
Fecha de Ingreso: ago 2007
Localización: Medelín Colombia
Mensajes: 15
Hola David

Primero muchas gracias por la respuesta.
Bueno en la definición de la tablas interna it_ztar_saldo_factu, yo la tengo exactamente como me lo sugiere usted.
El resto de tablas estan de tipo
DATA it_ztar_detalle_aux TYPE STANDARD TABLE OF ztar_detalle.

El programa debe depurar registros de 4 tablas diferentes, pero la base es ztar_saldo_factu y el caso más critico es ztar_detalle que tiene millones de registros.

Por favor si tienes otra sugerencia te agradezco me la cuentas.
Responder Con Cita
  #4  
Viejo 22/12/08, 06:59:09
bisonye bisonye is offline
Senior Member
 
Fecha de Ingreso: ago 2006
Mensajes: 635
Buenos días,

Primero estos temas de rendimiento pueden ser muy diferentes de un sistema a otro, por lo que una solución válida en un sistema puede no funcionar en otro.

Yo lo que haría es lo siguiente:
Como comenta David crearía la TI it_ztar_detalle_aux como HASED o SORTED table con KEY nro_factura y sociedad.
El crear la tabla de saldo como hased no te sirve de nada ya que tienes que recorrerla completa pero sin embargo en esta haces lecturas por lo que la creación de índices debería ayudarte.

Segundo en el delete despues del loop estás volviendo a recorrer tu tabla, aunque pongas una condición. Yo haría el delete dentro del loop y así me ahorraría un recorrido a la tabla.
En resumen el código sería así:

Espero que te sirva.

Saludos
Responder Con Cita
  #5  
Viejo 22/12/08, 15:55:31
goyleo goyleo is offline
Senior Member
 
Fecha de Ingreso: sep 2007
Mensajes: 102
La tabla it_ztar_detalle_aux ordenala por el campo nro_factura y sociedad . y en el READ a la misma utiliza BINARY SEARCH eso mejora la performance de la lectura de la tabla interna.
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 07:27:24.


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