если конкретнее:
rsrrepdir - каталог запросов, в поле compid - технические имена запросов
rszeltxref - таблица со связями технических id, важны поля seltuid и teltuid
rszrange - собственно ограничения строки запроса
rszcalc - формулы
rszeltdir - каталог компонент репорта (интересно поле mapname)
rszelttxt - тексты компонент репорта
необходимо учитывать, что данные в таблице rszeltxref хранятся рекурсивно, то есть елемент из поля teltuid используется рекурсивно в поле eltuid
Для получения данных первого уровня рекурсии можно использовать подобный запрос
SELECT DISTINCT a~compid b~laytp d~eltuid x~txtlg d~iobjnm d~low e~mapname f~txtlg g~eltuid
INTO TABLE lt_query
FROM rsrrepdir AS a INNER JOIN rszeltxref AS b ON b~seltuid = a~compuid AND b~objvers = a~objvers
INNER JOIN rszeltxref AS c ON c~seltuid = b~teltuid AND c~objvers = b~objvers
INNER JOIN rszrange AS d ON d~eltuid = c~teltuid AND d~objvers = c~objvers
LEFT OUTER JOIN rszeltdir AS e ON e~eltuid = d~low AND e~objvers = d~objvers
LEFT OUTER JOIN rszelttxt AS f ON f~eltuid = d~low AND f~objvers = d~objvers AND f~langu = 'E'
LEFT OUTER JOIN rszcalc AS g ON d~eltuid = g~eltuid AND d~objvers = g~objvers AND g~stepnr = '001'
LEFT OUTER JOIN rszelttxt AS x ON x~eltuid = d~eltuid AND x~objvers = d~objvers AND x~langu = 'E'
WHERE
a~compid LIKE p_compid AND
b~laytp <> 'NIL' AND
b~laytp <> 'SHT' AND
b~laytp <> 'FLT' AND
a~objvers = 'A' AND
b~objvers = 'A' AND
c~objvers = 'A' AND
d~objvers = 'A'.
Второй уровень рекурсии:
SELECT DISTINCT a~compid c~laytp d~eltuid x~txtlg d~iobjnm d~low e~mapname f~txtlg g~eltuid
APPENDING TABLE lt_query
FROM rsrrepdir AS a INNER JOIN rszeltxref AS b ON b~seltuid = a~compuid AND b~objvers = a~objvers
INNER JOIN rszeltxref AS c ON c~seltuid = b~teltuid AND c~objvers = b~objvers
INNER JOIN rszeltxref AS c2 ON c2~seltuid = c~teltuid AND c2~objvers = c~objvers
INNER JOIN rszrange AS d ON d~eltuid = c2~teltuid AND d~objvers = c2~objvers
LEFT OUTER JOIN rszeltdir AS e ON e~eltuid = d~low AND e~objvers = d~objvers
LEFT OUTER JOIN rszelttxt AS f ON f~eltuid = d~low AND f~objvers = d~objvers AND f~langu = 'Е'
LEFT OUTER JOIN rszcalc AS g ON d~eltuid = g~eltuid AND d~objvers = g~objvers AND g~stepnr = '001'
LEFT OUTER JOIN rszelttxt AS x ON x~eltuid = d~eltuid AND x~objvers = d~objvers AND x~langu = 'Е'
WHERE
a~compid LIKE p_compid AND
c~laytp <> 'NIL' AND
c~laytp <> 'SHT' AND
c~laytp <> 'FLT' AND
a~objvers = 'A' AND
b~objvers = 'A' AND
c~objvers = 'A' AND
c2~objvers = 'A' AND
d~objvers = 'A'.
и так далее ...
Можно конечно красивее решить итерацией, но как-то руки до сих пор не дошли