Меню

Практика освоения ABAP CDS для непрограммистов. Часть 8

|

Публикация предназначена для консультантов по различным модулям SAP ERP. Описываемая технология ABAP CDS наиболее актуальна для систем SAP S/4HANA, но может применяться и в любых системах, начиная с платформы SAP Netweaver 7.40 SPS05, независимо от используемой базы данных.

Часть 8. Продолжение.

Часть 1  Часть 2  Часть 3  Часть 4  Часть 5  Часть 6  Часть 7

Оглавление

3. АНАЛИЗ ДАННЫХ В CDS С ПОМОЩЬЮ QUERY BROWSER

3.1. Query Browser: возможности и подготовка к запуску

3.2. Навигация в списке ракурсов

3.3. Селекционный экран ракурса: работа VDM в OData

3.4. Анализ данных с помощью Query Browser

3.4.1 Общие настройки отображения и фильтрации

3.4.2 Настройки отображения отдельных полей

3.4.3 Работа с диаграммами

3. АНАЛИЗ ДАННЫХ В CDS С ПОМОЩЬЮ QUERY BROWSER

3.1. Query Browser: возможности и подготовка к запуску

Browser – это приложение, входящее в стандартную поставку SAP Fiori. Оно даёт возможность увидеть список всех аналитических CDS-ракурсов, доступных пользователю в рамках его полномочий. Query Browser обладает следующими возможностями:

  • Открыть ракурс для анализа данных. При этом используется встроенный в систему OLAP-клиент. С его помощью возможен просмотр данных как в формате сводной таблицы, так и в виде диаграммы.
  • Помещать отдельные ракурсы в список «Избранное». Это может быть удобно в тех случаях, когда полный список доступных ракурсов слишком велик и требуется много времени на постоянный поиск в нём.
  • Добавлять к отдельным ракурсам произвольные тэги (пометки). Эти тэги можно затем видеть в общем списке ракурсов рядом с их техническими именами.
  • Фильтровать список ракурсов.
  • Сортировать список ракурсов.
  • Просмотреть технические детали выбранного ракурса: список его полей, их названия и ABAP-типы.

В приводимых далее примерах будет использоваться логин FIORI_ADM.  Основной перечень его полномочий описан ранее. Но чтобы получить доступ к необходимым плиткам приложений на Fiori Launchpad, дополнительно требуется в системе Front-End присвоить этому пользователю роли SAP_BR_ANALYTICS_SPECIALIST и SAP_BR_EMPLOYEE.

Помимо этого, нужно самостоятельно или с помощью администраторов SAP BASIS активировать в транзакции /IWFND/MAINT_SERVICE следующие OData-сервисы:

  • RSAO_ODATA_SRV
  • BSANLY_APF_RUNTIME_SRV
  • VDM_CDSVIEW_BROWSER.

При активации выбрать Alias, указывающий на систему Back-End (как уже было показано на Рис. 8).

Наконец, необходимо проверить через транзакцию SICF, активированы ли следующие сервисы или ветки в иерархии сервисов:

  • /sap/bw/ina
  • /sap/bw/Mime
  • /sap/bc/ui5_ui5/sap/sbrt_appss1
  • /sap/bc/ui5_ui5/ui2/tilechips
  • /sap/bc/ui5_ui5/sap/viewbrowsers1
  • /sap/bc/ui5_ui5/sap/cdsbrowsers1
  • Сервисы по фильтру *sb_apps* в ветке /sap/bc/ui5_ui5/sap/

3.2. Навигация в списке ракурсов

 При наличии необходимых полномочий плитка Query Browser доступна в соответствующей группе на Fiori Launchpad (см. Рис.79)

Рис.79. Плитка, запускающая Query Browser

Нажатие плитки «Query Browser» запускает стартовое окно этого приложения. В нём приводится список всех аналитических CDS-ракурсов, доступных пользователю в соответствии с присвоенными ему ролями (см. Рис. 80).

Рис.80. Список доступных ракурсов в Query Browser

Подчеркнём, что в этот список попадают не все CDS-ракурсы, а только аналитические. То есть ракурсы использования, в заголовке которые указана аннотация @Analytics.query: true. Список содержит как стандартные ракурсы из поставки S/4HANA, так и пользовательские ракурсы.

В зависимости от полномочий пользователя, список может быть очень большим. В приведённом примере список содержит 430 ракурсов. Чтобы упростить навигацию в списке, вверху справа есть строка поиска. Используем её, чтобы найти созданный ранее ракурс ZC_FLIGHTBYAIRPORTQUERY. Поиск ведётся по частичному совпадению, поэтому достаточно ввести в строку поиска, например, только буквы «ZC». Получаем результат, показанный на Рис. 81.

Рис.81. Результат контекстного поиска ракурса по техническому имени

Чтобы в дальнейшем не прибегать каждый раз к поискам, можно добавить этот ракурс в «Избранное». Для этого слева от нужного ракурса нужно поставить галочку. И тогда в нижнем правом углу приложения станет доступна кнопка с пиктограммой в форме звезды (см. Рис. 82).

Рис.82. Кнопки работы с выделенным ракурсом: добавить в избранное, создать тэг, открыть в аналитическом приложении

Нажатие на эту кнопку добавляет ракурс в «Избранное». Теперь он и в списке также помечен пиктограммой-звездой (см. Рис. 83).

Рис.83. Ракурс добавлен в «Избранное» для работы в Query Browser

Чтобы после запуска Query Browser увидеть избранные ракурсы, нужно слева над общим списком выбрать опцию «Show Favorites». Это отфильтрует весь список по признаку «Избранное» (см. Рис. 84).

Рис.84. Просмотр списка «Избранное» в Query Browser

Аналогично можно добавить к ракурсу произвольную краткую текстовую пометку (тэг). Это делается с помощью кнопки «Add Tags» (см. Рис. 82). В появившееся текстовое поле вводится пометка, как показано на Рис. 85.

Рис.85. Добавление тэга к CDS-ракурсу в Query Browser

Сохранить или отменить введённый тэг можно кнопкой с многоточием. Можно таким образом добавить сразу несколько тэгов. Информация о наличии тэгов и об их количестве будет отражена в общем списке ракурсов (см. Рис. 86).

Рис.86. Отображение тэгов в списке ракурсов

Помимо поля поиска, вверху справа над списком ракурсов есть кнопка для сортировки и фильтрации этого списка (см. Рис. 87).

Рис.87. Кнопка для фильтрации и сортировки списка ракурсов

Сортировка возможна по техническому имени ракурса или по компоненту приложений. Фильтрация возможна также по компоненту. Но что гораздо интереснее – ещё можно фильтровать по тэгам. Получается очень гибкая возможность настраиваемой пользователем фильтрации: с одной стороны, можно приписать к ракурсу несколько тэгов. С другой стороны, можно и в условие фильтра выбрать несколько тэгов.

Нажатие на техническое имя ракурса отображает более детальную информацию о нём: имена и названия полей, их ABAP-типы данных (см. Рис. 88).

Рис.88.Обзор метаданных CDS-ракурса в Query Browser

Также выводятся сведения об аннотациях в заголовке ракурса (см. Рис. 89).

Рис.89.Обзор аннотаций CDS-ракурса в Query Browser

3.3. Селекционный экран ракурса: работа VDM в OData

 Переход к аналитическому исследованию данных происходит по нажатию кнопки «Open for Analysis» (см. Рис. 82). Приведённые рисунки подготовлены в системе S/4HANA 1709. В более ранних версиях эта кнопка называлась «Open in Design Studio».

Ракурс ZC_FLIGHTBYAIRPORTQUERY имеет параметры: аэропорты вылета и назначения. Поэтому перед просмотром данных в Query Browser выводится селекционный экран. Аэропорт вылета был определён как обязательный для заполнения параметр (см. Рис. 90).

Рис.90. Селекционный экран в Query Browser определяется параметрами CDS-ракурса

Поля селекционного экрана имеют справа характерные пиктограммы для выбора значений из списка: . Нажатие на эту пиктограмму в нашем примере выводит список кодов аэропортов и их названий. В верхней части окна есть поле контекстного поиска. Например, если нам нужен аэропорт Нью-Йорка (код JFK), то при наборе первых букв список автоматически фильтруется (см. Рис. 91).

Рис.91. Контекстный поиск при выборе параметра селекционного экрана

Работа этого списка является хорошей иллюстрацией возможностей VDM. В самом деле: на Рис.88 мы видели, что поля AIRPORTFROM и AIRPORTTO имеют тип CHAR3. Откуда же система берёт здесь полноценные названия и города? Для ответа вернёмся в ADT и откроем DDL-код ракурса ZC_FLIGHTBYAIRPORTQUERY. В нём для поля AIRPORTFROM с помощью аннотаций @Consumption.filter указано, что это должен быть обязательный для ввода параметр, содержащий ровно одно значение (см. Рис. 92).

Рис.92. Семантические аннотации для параметра AirportFrom

Мы можем как бы «раскрутить назад» иерархию ракурсов VDM, чтобы найти первоисточник данных для поля AIRPORTFROM. Источником данных ракурса ZC_FLIGHTBYAIRPORTQUERY является интерфейсный ракурс ZI_FLIGHTBYAIRPORT. В его DDL-коде видим следующую строчку:

  1. ZI_FLIGHT._FlightConnection.AirportFrom

То есть поле AIRPORTFROM приходит из аннотации _FlightConnection, определённой в ракурсе ZI_FLIGHT. Смотрим код этого ракурса и определение ассоциации (см. Рис. 93).

Рис.93. CDS-ракурс ZI_FLIGHT, определение ассоциации _FlightConnection

Таким образом, источник поля AIRPORTFROM нужно искать в ракурсе ZI_FLIGHTCONNECTION (см. Рис. 94).

Рис.94. CDS-ракурс ZI_FLIGHTCONNECTION, поле AirportFrom

Как видим, поле AirportFrom заполняется из поля airpfrom стандартной таблицы SPFLI. Ключевым моментом является использование для этого поля аннотации @ObjectModel.foreignKey.association. Она указывает на ассоциацию _AirportFrom (а следовательно – на ракурс ZI_AIRPORT) как на справочник значений для поля AirportFrom. Ранее, разбирая пример с созданием ракурса ZI_FLIGHTCONNECTION, мы уже упоминали эту аннотацию. Она говорит системе о том, что если поле AirportFrom нужно будет заполнить на селекционном экране приложения SAPUI5, то в качестве справочника к полю выбора будут подтягиваться данные из ракурса ZI_AIRPORT.

Теперь посмотрим в DDL-код

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти

Обсуждения Количество комментариев1

Комментарий от  

Алексей Токарев

  |  12 марта 2019, 10:56

Виталий, спасибо. Отличная статья