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
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти