Модель программирования на ABAP для SAP Fiori*
В этой статье рассматривается модель программирования на ABAP для SAP Fiori, доступная с версии SAP S/4HANA 1610, SPS 03 или SAP NetWeaver Application Server для ABAP 7.52, SP 02. Это стандартная модель разработки для новых приложений SAP S/4HANA. Она отражает базовую архитектуру SAP S/4HANA.
В этой статье рассматривается модель программирования на ABAP для SAP Fiori, доступная с версии SAP S/4HANA 1610, SPS 03 или SAP NetWeaver Application Server для ABAP 7.52, SP 02. Это стандартная модель разработки для новых приложений SAP S/4HANA. Она отражает базовую архитектуру SAP S/4HANA, описанную в главе 1 книги «ABAP Development for SAP S/4HANA. ABAP Programming Model for SAP Fiori» (издательство SAP PRESS, 2019).
В общем, данная модель поддерживает разработку оптимизированных для SAP HANA сервисов OData для приложений SAP Fiori на основе ракурсов Core Data Services (CDS) и охватывает сценарии для аналитических и транзакционных приложений, а также для приложений поиска. При разработке приложений с использованием модели программирования различаются два основных сценария: приложения только для чтения и транзакционные приложения. Приложения только для чтения требуют наличия базовой модели данных CDS и специфичной для приложения аналитики или аннотаций для поиска. Модель данных CDS и её аннотации выводятся в виде сервиса OData с использованием технологии Service Adaptation Description Language (SADL).
Транзакционные приложения в дополнение к приложениям только для чтения требуют создания бизнес-объекта Business Object Processing Framework (BOPF) для выполнения операций создания, обновления и удаления, а также реализации дополнительной бизнес-логики посредством действий, проверок и выбора BOPF. Далее рассмотрим различные технологии, связанные с моделью программирования на ABAP.
*ABAP Development for SAP S/4HANA. ABAP Programming Model for SAP Fiori. Стефан Хаас, Бинс Мэтью. Издательство SAP PRESS. Глава 3. 2019, с. 95-117.
1. Core Data Services
Core Data Services (CDS) — это основа для всех видов приложений SAP S/4HANA. Их развёртывание выполняется поверх прежних или новых таблиц SAP ERP. Они позволяют разрабатывать семантически насыщенные модели данных с передачей кода в базу данных SAP HANA. Они разрабатываются в стеке ABAP и поэтому используют стандартные средства управления жизненным циклом для объектов разработки ABAP. Например, они переносятся между системами с помощью стандартной транспортной системы переносов ABAP (CTS).
При активации ракурса CDS создаются два объекта: соответствующий ракурс словаря данных (DDIC) в ABAP-словаре (@AbapCatalog.sqlViewName) и ракурс SAP HANA в базе данных. Переносится только определение ракурса CDS. Для него существует запись в репозитарии объектов R3TR DDLS <CDS_DEFINITION_VIEW_NAME>.
Для включения различных сценариев приложений ракурсы CDS, определяемые с использованием языка определения данных (DDL) для CDS, можно расширить посредством аннотаций различных видов.
- Аналитические аннотации
Для использования ракурса CDS в качестве куба данных или запроса в сценариях аналитических приложений посредством аналитического механизма требуется наличие аннотаций @Analytics.
- Аннотации для UI
Аннотации для ракурсов CDS можно определить с помощью аннотаций интерфейса пользователя (@UI). Это позволяет указать, где будут размещаться определенные сущности, поля и данные в приложении шаблона элементов SAP Fiori, что существенно сокращает требуемый код фронтэнда JavaScript SAPUI5. Аннотации интерфейса пользователя можно перенести в файл расширения метаданных с типом репозитария объектов R3TR DDLX, чтобы не загромождать ракурс CDS аннотациями интерфейса пользователя.
- Аннотации для поиска
Ракурсы CDS можно сконфигурировать для сценариев поиска с помощью аннотаций @Search, например, в качестве модели корпоративного поиска (ESH) для поиска на панели запуска SAP Fiori или встроенных в приложения SAP Fiori функций поиска, определив объем текстового поиска в SAP HANA и степень соответствия.
- Транзакционные аннотации
Для активации возможностей транзакционной обработки (создание, запись, удаление) в дополнение к функциям поиска или аналитики можно создать объект BOPF для сущности CDS посредством транзакционных аннотаций @ObjectModel.
На рис. 1 представлен обзор потока разработки модели программирования на ABAP с используемыми объектами. Как видим, CDS находится в центре потока разработки и, например, базиса сервиса OData, который, в свою очередь, используется приложением SAP Fiori или бизнес-объектом BOPF для транзакционной обработки.
Рис. 1. Обзор потока разработки модели программирования на ABAP и его объекты
2. SAP Gateway
SAP Gateway играет огромную роль в предоставлении удобного доступа, базирующего на не ABAP-коде, к бизнес-данным, которые хранятся в бэкэнд-системах SAP NetWeaver. Доступ к бизнес-данным предоставляется с помощью сервисов OData на базе REST с использованием HTTP в качестве основного протокола передачи данных.
Что касается SAP NetWeaver версии 7.40, компонент программного обеспечения SAP_GWFND устанавливается в рамках стандарта SAP NetWeaver и включает в себя полный объем функциональности для активации хаба и бэкэнда. Вообще с точки зрения архитектуры существует два подхода к развёртыванию: встроенное развёртывание и развёртывание через хаб. Развёртывание через хаб далее подразделяется на разработку в хабе и разработку в бэкэнд-системе. Стандартная настройка локальной системы SAP S/4HANA показана на рис. 2. Обычно разработка выполняется в бэкэнд-системе ABAP, а хаб-система используется для обработки дополнительной нагрузки по клиентским запросам OData к компоненту SAP Gateway. Для такой настройки требуется дополнительная система SAP NetWeaver, функционирующая как хаб-система или фронтэнд-сервер SAP Gateway, а также доверительное RFC-соединение между хабом и бэкэнд-системой для передачи запросов из фронтэнда в бэкэнд-систему, которая содержит бизнес-логику и данные. Для передачи данных из фронтэнда в бэкэнд используется функциональный модуль с RFC /IWBEP/FM_MGW_HANDLE_REQUEST.
Рис. 2. Общий обзор стандартной настройки системы SAP S/4HANA с SAP Gateway в качестве отдельной хаб-системы
Приложение SAP Fiori, выполняемое в браузере, отправляет запросы OData HTTP GET, POST, DELETE или PUT в систему SAP Gateway, которая выводит все зарегистрированные и активированные сервисы OData. SAP Gateway передаёт входящие запросы OData в бэкэнд по доверительному RFC-соединению. Во время выполнения OData в бэкэнде выбор фактических данных делегируется на уровень структуры SADL. Если запрос является доступным только для чтения запросом GET, SADL делегирует запрос механизму обработки очереди, который создаёт SQL-инструкцию SELECT для выбора данных запрошенной сущности OData из таблиц базы данных через соответствующий ракурс CDS. Если доступ предполагает возможность записи, например, POST для создания или PUT для обновления, запрос будет делегирован для выполнения в транзакционный BOPF-объект с обработкой обновлений базы данных согласно предоставленным транзакционным аннотациям из ракурса CDS.
3. OData
OData — это протокол данных на базе REST для переноса бизнес-данных и метаданных между бэкэнд-системой ABAP и клиентскими приложениями с помощью хаб-системы SAP Gateway. В SAP S/4HANA клиентскими приложениями сервисов OData обычно являются приложения SAP Fiori SAPUI5, выполняемые в локальных браузерах на устройствах конечных пользователей, например, на настольных ПК или планшетах. Вместе с SAP Gateway OData предоставляет доступ к бизнес-данным в бэкэнд-системе SAP простым и удобным способом посредством протокола передачи данных HTTP.
3.1. Обзор
Сервис OData организует данные в форме сущностей с набором свойств, объединённых взаимосвязями. Эти элементы напоминают элементы моделей данных CDS, поэтому модели данных CDS являются идеальным средством вывода сервисов OData.
Чтобы понять структуру сервиса OData, посмотрите на сервисный документ и документ метаданных сервиса. Сервисный документ содержит список сущностей или ресурсов, к которым можно обращаться посредством данного сервиса или запрашивать посредством /sap/ opu/odata/sap/<OData_service_name>/. Кроме того, определить, позволяет ли сервис создавать, изменять или удалять сущности, можно по атрибутам sap:creatable, sap:updatable и sap:deletable тега <app:collection>, который также содержит относительную ссылку на набор сущностей через его атрибут href (см. рис. 3).
Рис. 3. Сервисный документ для простого документа закупки и сервис OData для позиции документа закупки
Сервисный документ метаданных содержит намного более подробные данные, чем сервисный документ, и отражает все метаданные сервиса. Для его запроса используется опция $metadata: /sap/opu/odata/sap/<OData_service_name>/$metadata. С её помощью можно просмотреть все сущности сервиса вместе с их свойствами и связями.
OData использует команды REST HTTP POST, GET, PUT и DELETE для создания, считывания, обновления и удаления сущностей (CRUD). OData также определяет простой, но мощный язык запросов для ограничения набора результатов, предоставляемого SAP Gateway. В табл. 1 представлены самые распространённые опции запроса OData.
Табл. 1. Самые важные опции запроса OData
Табл. 1. Самые важные опции запроса OData (продолжение)
3.2. Создание сервиса OData
Как вы уже знаете, данные можно напрямую выбрать из ракурса CDS с помощью Open SQL на ABAP, как при выборе данных из таблицы обычной базы данных. Однако для приложения SAP Fiori требуется представление данных с помощью сервиса OData и протокола передачи данных HTTP.
В настоящее время модель данных CDS можно вывести как сервис OData тремя разными способами: автоматическое представление, ссылочный источник данных (RDS) или источник данных с мэппингом (MDS).
Автоматическое представление
Самым простым, но при этом накладывающим наибольшие ограничения способом вывода модели CDS в виде сервиса OData является использование аннотации заголовка @OData.publish:true (листинг 1).
@AbapCatalog.sqlViewName: ‘SQL_VIEW_NAME’
…
@OData.publish: true
define view CDS_VIEW_NAME as select from …
Листинг 1. Аннотация заголовка @OData.publish:true для вывода простой и непротиворечивой модели данных CDS в виде сервиса OData
При активации ракурса в инструментах разработки на ABAP в Eclipse в системе создаются несколько объектов (рис. 4):
- Фактический объект активации сервиса Business Suite SAP Gateway с именем <CDS_ VIEW_NAME>_CDS (тип объекта: R3TR IWSV).
- Модель SAP Gateway с именем <CDS_VIEW_NAME>_MDL (тип объекта: R3TR IWMO).
- Модель аннотации с именем <CDS_VIEW_NAME>_CDS_VAN (тип объекта: R3TR IWVB).
По умолчанию созданный сервис OData деактивирован. Его необходимо активировать вручную с помощью транзакции /IWFND/MAINT_SERVICE в хаб-системе SAP Gateway.
Оформите подписку sappro и получите полный доступ к материалам SAPPRO
Оформить подпискуУ вас уже есть подписка?
Войти