мне кажется лучше этот вопрос задать на ABAP форуме, там уж точно расскажут как оптимальнее сделать такие выборки.
select по bseg и bkpf в цикле это жесть.. 
1. Выберните данные во внутреннюю таблицу заранее, а в цикле уже ищите в ней нужные записи. Нагрузит память, но будет быстрее шевелиться.
Лучше выбирать данные из bseg (если есть возможность) по ключу: BUKRS GJAHR BELNR BUZEI.
посмотрите темы:
http://sapboard.ru/forum/viewtopic.php?f=13&t=61549&start=0http://sapboard.ru/forum/viewtopic.php?f=13&t=35092. Может вместо bseg искать данные в:
- BSID (невыровненные дебиторские позиции); 
- BSAD (выровненные дебиторские позиции); 
- BSIK (невыровненные кредиторские позиции); 
- BSAK (выровненные кредиторские позиции); 
- BSIS (невыровненные позиции) 
- BSAS (выровненные позиции)