Меню

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

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

Войти