#11
|
|||
|
|||
Estupendo! Aprovecha para ponerte una medallita, que tal y como están los trabajos puede hacer falta!! |
#12
|
|||
|
|||
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. |
#13
|
||||
|
||||
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. |
#14
|
||||
|
||||
Gracias Por La Correcion, A Lo Mejor Me Falto Aclarar A Que Tablas.
Saludos. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|