SAPфорум.RU
https://sapboard.ru/forum/

Таблицы, где можно посмотреть состав BEX Query запроса
https://sapboard.ru/forum/viewtopic.php?f=12&t=97268
Страница 1 из 1

Автор:  Pavlik [ Ср, янв 23 2019, 17:56 ]
Заголовок сообщения:  Таблицы, где можно посмотреть состав BEX Query запроса

Добрый день!

Есть задача описать в файле из чего состоит каждая строка в BEX Query запросе. Все бы ничего, но строк более 700.
Не хотелось бы вручную заходить в каждую и описывать.
Возможно есть какие-то системные таблицы, где можно как-то вычленить данную информацию?

Спасибо!

Автор:  Air_demon [ Ср, янв 23 2019, 23:05 ]
Заголовок сообщения:  Re: Таблицы, где можно посмотреть состав BEX Query запроса

Добрый день.

Описание элементов Bex-запроса и их взаимосвязей хранится в таблицах пакета RSZ.
Кроме того есть транзакция RSRTQ, в которой в "плоском" виде можно посмотреть настройки запроса и выгрузить их в файл.

Автор:  kilaka [ Чт, янв 24 2019, 12:51 ]
Заголовок сообщения:  Re: Таблицы, где можно посмотреть состав BEX Query запроса

если конкретнее:

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'.

и так далее ...

Можно конечно красивее решить итерацией, но как-то руки до сих пор не дошли :)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/