Текущее время: Пт, мар 29 2024, 01:55

Часовой пояс: UTC + 3 часа




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

Зарегистрирован:
Чт, мар 01 2012, 15:22
Сообщения: 154
Добрый день!

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

Спасибо!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Таблицы, где можно посмотреть состав BEX Query запроса
СообщениеДобавлено: Ср, янв 23 2019, 23:05 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
Добрый день.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблицы, где можно посмотреть состав BEX Query запроса
СообщениеДобавлено: Чт, янв 24 2019, 12:51 
Ассистент
Ассистент

Зарегистрирован:
Ср, апр 02 2014, 18:03
Сообщения: 43
если конкретнее:

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

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

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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB