Очень кратко: существует группа функций 
RSAX, есть функциональный модуль 
RSAX_BIW_GET_DATA_SIMPLE, на основе этого ФМ делается экстрактор. В исходном коде есть строчки:
Code:
      OPEN CURSOR WITH HOLD S_CURSOR FOR
     SELECT (S_S_IF-T_FIELDS) FROM SFLIGHT
                               WHERE CARRID  IN L_R_CARRID AND
                                     CONNID  IN L_R_CONNID.
    ENDIF.           
Здесь вам нужно открывать курсор по соответствующему SQL запросу (для Вашей задачи).
Code:
    FETCH NEXT CURSOR S_CURSOR
               APPENDING CORRESPONDING FIELDS
               OF TABLE E_T_DATA
               PACKAGE SIZE S_S_IF-MAXSIZE.
Здесь передается 
пакет данных в BW с размером 
S_S_IF-MAXSIZE.  
Нужно сделать аналогичным образом, чтобы избежать переполнения внутренней таблицы.
В случае, если у Вас существует еще какая то логика обработки данных внутренней таблицы, то как Вы сказали нужно "дорабатывать абап и откусывать по частям" и передавать внутреннюю таблицу "пакетировано".