domingo, 6 de octubre de 2013

Leer múltiples registros de una tabla interna

Muchas veces necesitamos varios registros de una tabla interna que tienen un campo en común. Lo mas practico es hacer una consulta a la tabla transparente, aunque esto daña el rendimiento de nuestro programa.

Lo mas optimo es un loop anidado y para no dañar el rendimiento del programa se hace a partir de indices.

Ejemplo:

SORT IT1 BY F1. "F1 es el campo de referencia en ambas tablas
SORT IT2 BY F1.

LOOP AT IT1.

* Obtienes el indice desde donde leemos IT2
  READ TABLE IT2 TRANSPORTING NO FIELDS WITH KEY F1 = IT1-F1 BINARY SEARACH.
  IF SY-SUBRC = 0.

    LOOP AT IT2 FROM SY-TABIX.
      IF IT2-F1 NE IT1-F1. "Si el valor de IT1 cambia, salimos del loop
        EXIT.
      ENDIF.
      "Aquí es donde procesaremos la información de IT2
    ENDLOOP.
  ENDIF.
ENDLOOP. 

No hay comentarios:

Publicar un comentario