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.