Приложение для вызова HANA calculation view из ABAP

Ранее я писал об возможности делать SQL запрос к Hana модели из ABAP, предварительно не создавая результирующую структуру, а так же описал принцип работы этого подхода.

Если добавить в эту схему GUI ввода и вывода, то получится своеобразная консоль с усеченными возможностями.

Реализация

В качестве поля для ввода текста я использовал стандартный класс cl_gui_textedit, на экране у меня будет поле ввода по ограничению количества строк вывода, буду отслеживать время затраченное на выполнения запроса.

Экран ввода текста

У меня он называется ‘0200’.

Контейнер называется TEXTEDITOR , поле ввода ROWS, кнопка вызывает user-command EXECUTE.

В статус добавим кнопку завершения программы,

PBO для этого экрана

PAI

Итак, при вводе SQL команды и нажатии на кнопку EXECUTE, текст считывается в переменную sql, далее при помощи ФМ SCP_REPLACE_STRANGE_CHARS из этой строки удаляются все лишние символы (например символы переноса строки). Параметр replacement это код ASCII на который будут заменяться найденные литералы. 32 код пробела.

Далее вызывается метод zcl_sql_executor=>result_hana_model(), который я описал в прошлой статье. Замеряем время исполнения оператором get run time. Присваиваем ссылку <tab>. На этом этапе у нас есть все, что бы вывести результаты в ALV.

Для большей аутентичности, можно сделать вывод в docking container, допустим снизу, но в этом примере я сделал вывод на отдельный экран.

Экран вывода

У меня экран вывода называется ‘0100’.

В статусе добавим кнопки BACK и OUT.

Title bar зададим следующим образом.

PAI

Получился такой вариант. При нажатии кнопки назад и исполнении кнопки EXECUTE элементы экрана фактически пересоздаются. Пойти на это пришлось из-за метода cl_gui_cfw=>flush( ). Наверно решить эту проблему можно и более элегантным способом.

PAI

Результаты работы

Запустим приложение введем SQL запрос из прошлых статей, в качестве входящего параметра установим EUR.

Нажмем EXECUTE

Как видно, заголовок принял значение модели, в заголовке таблицы время исполнения.

Теперь нажмем кнопку назад (в статус сверху), поменяем входящий параметр на USD и ограничим количество записей до 10. В select поставим звездочку (*)

Видим следующий результат.

Поля все вывелись, но в другом порядке, к сожалению нормального способа отсортировать их при вызове со звездочкой нет.

Допустим ошибку в запросе (убрал запятую после «SEATSOCC_F»).

Ключевая разница с обычной консолью

Пользователь, под которым вы вызываете консоль и пользователь, под которым вызывается SQL команда из ABAP, это разные пользователи, с разным количеством привилегий. Зачастую (не всегда) бывает прав на запуск команд из консоли меньше чем из ABAP.

Исходный код

Исходный код этого приложения можно найти по ссылке.

Для запуска необходимо скопировать. содержимое ZCL_SQL_EXECUTOR.abap и ZHANA_VIEWER.abap. Добавить экраны. На экране ввода текста расположить элементы как показано в этой статье выше.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *