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
  #11  
Viejo 19/01/09, 10:19:53
bisonye bisonye is offline
Senior Member
 
Fecha de Ingreso: ago 2006
Mensajes: 635

Estupendo!

Aprovecha para ponerte una medallita, que tal y como están los trabajos puede hacer falta!!
Responder Con Cita
  #12  
Viejo 19/01/09, 13:46:43
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
Buenas tardes, se que la pregunta esta respondida pero solo queria hacer algun comentario adicional por si a alguien le interesa

Creo que casi todos estaremos deacuerdo en que el INNER JOIN siempre que sea posible es la opcion mas optima pero utilizando FOR ALL ENTRIES se pueden obtener resultados "parecidos"

Si la tabla sobre la que vas a hacer FOR ALL ENTRIES es muy grande se debe partir en trozos (SAP comunmente utiliza fragmentos de 500 registros) y hacer las consultas sobre esos fragmentos

Tambien es recomendable ordenar la tabla por el orden que vayamos a acceder

Ejemplo:

LOOP AT gt_datos

IF sy-tabix MOD 500 = 0.

SORT gt_aux BY campo1 (los campos que vayamos a usar en el where)

SELECT (campos)
APPENDING TABLE tabla
FROM tabla
FOR ALL ENTRIES IN gt_aux
WHERE campo1 = gt_aux-campo1
AND...

CLEAR: gt_aux.
REFRESH: gt_aux.

ELSE.

MOVE_CORRESPONDING gt_datos TO gt_aux
APPEND gt_aux.
CLEAR gt_aux.

ENDIF.

ENDLOOP.
Responder Con Cita
  #13  
Viejo 20/01/09, 23:31:51
Avatar de negrogho
negrogho negrogho is offline
Member
 
Fecha de Ingreso: ene 2007
Mensajes: 65
Que tal amigos

tienes razon ballan cuando son registros muy grandes la consulta se hace mas dinamica en pedazos, incluso yo en lugar del FOR ALL ENTRIES utilizo variables tipo rango y realizo la consulta de 1000 en 1000, eso me reduce bastantes los tiempos de consulta

LOOP AT gt_datos

IF contador = 1000.

SELECT (campos)
APPENDING TABLE tabla
FROM tabla
WHERE campo1 IN rango_campo1
AND...

CLEAR: rango_campo1, contador
REFRESH: rango_campo1.

ENDIF.

MOVE 'I' to rango_campo1-sign.
MOVE 'EQ' to rango_campo1-option.
MOVE gt_datos-campo1 to rango_campo1-low.
APPEND rango_campo1.
contador = contador + 1.

ENDLOOP.
Responder Con Cita
  #14  
Viejo 21/01/09, 04:28:47
Avatar de Edd_401
Edd_401 Edd_401 is offline
Senior Member
 
Fecha de Ingreso: may 2007
Mensajes: 119
Gracias Por La Correcion, A Lo Mejor Me Falto Aclarar A Que Tablas.

Saludos.
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 10:34:54.


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