OData v2: использование CDS для создания сервиса и для создания сущности в сервисе
Данная статья является частью вебинара WebABAP: разработка OData-сервисов в среде SAP NetWeaver.
Оглавление
Создание ODATA-сервиса на основе CDS
Создание ODATA-сущности для имеющегося OData-сервиса на основе CDS (SADL)
Добавим еще одну сущность (следующую сущность)
Базовый курс опубликован по ссылке, а материалы курса (и ссылки на вспомогательные материалы) доступны на github-репозитарии. Сам курс основывается на мини-модели extended TVARV-like model: несколько таблиц, чьё назначение вести переменные значения, диапазоны, переключатели, пояснения и документации к важным переменным в системе (например, набор видов сбытовых заказов, для которых при сохранении нужно отправлять сообщение в telegram). Как правило, подобный TVARV-контейнер есть на любом проекте в том или ином виде.
CDS – это довольно новый объект в среде SAP-разработки. Но в OData-сервисы он очень хорошо вписывается. На основе CDS можно создавать как отдельный OData-сервис, так и сущность уже имеющегося OData-сервиса. В этой статье рассматриваются две эти возможности.
Для целей демонстрации я буду использовать модель данных таблиц твердо-изменяемых данных (TVARV-подобных) (extended TVARV-like model).


Создание ODATA-сервиса на основе CDS
Создадим простую CDS на основе таблиц ZTWA001_VARID + ZTWA001_VARVAL.
Для этого в Eclipse выберем Repository Object.

Затем выберем объект Data Definition:

Укажем имя.
ZVWA003_VARHCDS / CDS fro VarH

Выберем template CDS in Join:

Система предоставит шаблон для создания CDS.
Обратим внимание, что в CDS используется агрегированная функция COUNT
Добавим
@OData.publish: true:
@AbapCatalog.sqlViewName: 'ZVWA003_VARH'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS fro VarH'
@OData.publish: true
define view ZVWA003_VARHCDS
as select from ztwa001_varid as h
left outer join ztwa001_varval as i on h.var_name = i.var_name
{
key h.var_name as VAR_NAME,
h.var_desc as VAR_DESC,
h.var_type as VAR_TYPE,
h.is_del as IS_DEL,
h.is_debug_on as IS_DEBUG_ON,
h.fast_val as FAST_VAL,
h.cru as CRU,
h.crd as crd,
h.crt as crt,
h.chu as chu,
h.chd as chd,
h.cht as cht,
count(*) as NUM_OF_VALUES
} group by h.var_name, h.var_desc, h.var_type,
h.is_del, h.is_debug_on, h.fast_val,
h.cru, h.crd, h.crt, h.chu, h.chd, h.cht
После того, как мы активировали CDS с аннотацией @OData.publish: true за кадром создался незарегистрированный сервис (ровно также как и в случае создания OData-сервиса через структуру). Нам нужно зайти в транзакцию /IWFND/MAINT_SERVICE - Activate and Maintain Services и зарегистрировать сервис.
Нажимаем кнопку Add Service:

Для поиска в имени указываем имя CDS – система покажет сервис. Выделяем запись и нажимаем Add Selected Services.


Указываем пакет и подтверждаем создание:

В случае успешного создания – можем просмотреть протестировать через /IWFND/GW_CLIENT - SAP Gateway Client.
Имя сервиса = имени CDS.
/sap/opu/odata/SAP/zvwa003_varhcds_cds/$metadata

Чтобы извлечь данные в качестве сущности Set нужно также указать имя CDS:

GET
/sap/opu/odata/SAP/zvwa003_varhcds_cds/ZVWA003_VARHCDS('ZDMS_N3')
Сервис также доступен для вызова из транзакции SICF (путь: sap-> opu -> odata -> sap).
Выборка из CDS будет предполагать все основные возможные опции OData: filter, select, skip, top. Создавая сервис таким способом, мы не можем редактировать данные и даже до-расширить сервис, чтобы данные можно было редактировать.
Создание ODATA-сущности для имеющегося OData-сервиса на основе CDS
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти