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 04/10/11, 14:02:38
gdmj1107 gdmj1107 is offline
Member
 
Fecha de Ingreso: mar 2006
Mensajes: 93
Tablas equi, eqbs

Hola a todos, les comento que realizo un select de estas tablas y debo leer aproximadamente 17 millones de registros los que tengo que guardar en una tabla interna. Los parámetros que tengo es el material, el centro y el almacen. Es un solo material en este caso.

Sin embargo he tenido problemas de memoria y el proceso nunca termina, se ha ampliado el espacio de memoria pero ni aun asi se soluciona el problema.

Lo que me podia a pensar es que si en el select haya una forma de leer del primer registro al numero 10 por decir algo llevarlo a la tabla interna, trabajarlo, luego seleccionar del registro 11 al 20, llevarlo a la tabla interna, etc. Es decir hacer un select controlado aparte de los parámetro que se tiene?
Adjunto mi sentencia select.
SELECT EQUI~erdat
EQUI~CHARGE EQUI~EQUNR EQUI~LAGER EQUI~MATNR EQUI~SERNR
EQUI~WERK EQBS~B_CHARGE EQBS~B_LAGER EQBS~B_WERK EQBS~EQUNR
INTO CORRESPONDING FIELDS OF TABLE TABLA

FROM ( EQUI
INNER JOIN EQBS
ON EQBS~EQUNR = EQUI~EQUNR )
WHERE
EQUI~MATNR IN MATERIAL
AND EQUI~SERNR IN NSERIE
AND EQBS~B_LAGER IN ALMACEN
AND EQBS~B_WERK IN CENTRO.

Gracias por su ayuda
Responder Con Cita
  #2  
Viejo 04/10/11, 14:21:31
Avatar de mysmb2
mysmb2 mysmb2 is offline
Senior Member
 
Fecha de Ingreso: ene 2007
Localización: Cordoba
Mensajes: 406
hola lo que podes hacer es paquetizar tu consulta pero si el problema es de memoria por mas eficiente que hagas la consulta el error esta en la cantidad de registros en la tabla interna.
proba con
select xxx up to n rows
haces el append a la tabla interna
endselect

donde xxx son los campos y las condiciones y n es la cantidad de registros por operacion.

espero te sirva,
saludos!
__________________
Sebastián Chiavia
Responder Con Cita
  #3  
Viejo 04/10/11, 15:05:52
K-MUS K-MUS is offline
Member
 
Fecha de Ingreso: feb 2006
Localización: Capital Federal
Mensajes: 87
Hola gdmj1107

1 - Elimina el INNER JOIN

2 - Proba barriendo toda la tabla interna o por un índice, muchas veces es mejor traer más registros de lo necesario ya que el acceso es más lentoq ue trabajar con memoria interna. y te aconsejo usar la técnica de "cursor paralelo" (Parallel Cursor) para loopear tablas internas con muchos registros, si no sabes lo que es ... buscalo y vas a encontrar mucha info en inet.

3 - No existe una Base de datos lógica que te sirva, pero una opción podría hacer una. Nuevamente si no sabes que es una base de datos lógicas busca info, te lo digo porque funcionan bien con reportes de muchos registros (casi todos los reportes de FI por ejemplo los fbl3n y demas... usan base de datos lógicas)

4 - Si igualmente barriendo las tablas, usando índices o base de datos lógicas, no se puede correr online. Tendrán que correr de fondo el reporte.

Saludos
Responder Con Cita
  #4  
Viejo 05/10/11, 15:11:05
gdmj1107 gdmj1107 is offline
Member
 
Fecha de Ingreso: mar 2006
Mensajes: 93
Gracias por la ayuda, probaré las sugerencias que me dan

Gracias
Responder Con Cita
  #5  
Viejo 05/10/11, 15:31:29
beltsoft beltsoft is offline
Member
 
Fecha de Ingreso: sep 2011
Localización: Mexico
Mensajes: 99
Las sugerencia de K-MUS son muy buenas adicional te sugiero:

1. Quitar esto: INTO CORRESPONDING FIELDS OF TABLE TABLA, Por: INTO TABLE TABLA.

2. Utiliza Hashed tables.

3. Muy importante lo de INDICE, ya comentado.

Saludos.
__________________
SSE BeltSoft México
Your Business, our motivation ...
Responder Con Cita
  #6  
Viejo 12/10/11, 21:41:47
gdmj1107 gdmj1107 is offline
Member
 
Fecha de Ingreso: mar 2006
Mensajes: 93
Hola a todos, reformé mi consulta utilizando una vista que utiliza las dos tablas que necesitaba. El tiempo de consulta se redujo. Lo que ahora requiero es saber si utilizando el
select xxx up to n rows
puedes seleccionar una cantidad n de filas y luego en una segunda vez puedes seleccionar una cantidad también n de filas pero a partir de una determinada fila en la que te quedaste en la primera consulta.

Necesito leer toda la vista secuencialmente porque requiero las existencias de los respectivos materiales por número de serie.

Si me pueden ayudar les agradezco mucho

Salu2
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 05:56:53.


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