Методы исполнения oData сервиса | Service Implementation CRUD

Нам нужно написать ABAP код и логику выбора данных из бэкэнд системы во внутреннюю таблицу (Entity Set) сервиса OData.

Методы исполнения oData сервиса

OData является RESTful-протоколом. Это означит что, ресурсы можно просматривать, создавать, изменять, удалять (для краткости эти операция обозначают аббревиатурой CRUD), используя для этого HTTP-методы.

Методы исполнения:

  • Create – добавление одного объекта в базу данных SAP;
  • Delete – удаление одного объекта в базу данных SAP;
  • GetEntity – получение из базы данных SAP в режиме чтения одного объекта;
  • GetEntitySet – получение из базы данных SAP в режиме чтения нескольких объектов;
  • Update – изменение одного объекта в базе данных SAP.
  • Возвращаемся в Back-End систему, в транзакцию SEGW. Переопределим методы чтения данных GetEntity и GetEntitySet для всех Entity Sets.

Правой кнопкой мыши вызываем меню и выбираем пункт «Go to ABAP Workbench». Нажмем Ок в информационном окне.

Go to ABAP Workbench

В открывшемся окне построителя классов, для метода чтения вызываем контекстное меню и выбираем пункт «Переопределить»:

Построитель классов oData сервиса

Для выбранного метода появится повторное определение (переопределение):

Переопределение классов oData сервиса

Активируем унаследованный метод, сгенерируем сервис и в фронтэнд системе запустим транзакцию /IWFND/GW_CLIENT – SAP Gateway Client. В поле Request URI укажем путь /sap/opu/odata/sap/ZCO_BUDGETFS1_SRV/GroupSet. Получим ответ сервера 200: все хорошо. Вернулась пустая внутренняя таблица.

Сгенерируем сервис и в фронтэнд системе запустим транзакцию /IWFND/GW_CLIENT

Теперь запишем простую логику заполнения набора сущностей для метода GROUPSET_GET_ENTITYSET. Для примера, во внутреннюю таблицу запишем три объекта:

 
 
  1. method GROUPSET_GET_ENTITYSET.
  2. DATA wa_fmbl_1 like line of et_entityset.
  3. clear wa_fmbl_1.
  4. wa_fmbl_1-GroupId = '100'.
  5. wa_fmbl_1-GroupName = 'Завод УВК'.
  6. wa_fmbl_1-Tcurr = 'RUB'.
  7. wa_fmbl_1-Tval00 = 10.
  8. wa_fmbl_1-Tval01 = 100.
  9. wa_fmbl_1-Tval02 = 1000.
  10. append wa_fmbl_1 to et_entityset.
  11. wa_fmbl_1-GroupId = '200'.
  12. wa_fmbl_1-GroupName = 'Завод ККГ'.
  13. wa_fmbl_1-Tcurr = 'RUB'.
  14. wa_fmbl_1-Tval00 = 20.
  15. wa_fmbl_1-Tval01 = 200.
  16. wa_fmbl_1-Tval02 = 2000.
  17. append wa_fmbl_1 to et_entityset.
  18. wa_fmbl_1-GroupId = '300'.
  19. wa_fmbl_1-GroupName = 'Завод ССП'.
  20. wa_fmbl_1-Tcurr = 'RUB'.
  21. wa_fmbl_1-Tval00 = 30.
  22. wa_fmbl_1-Tval01 = 300.
  23. wa_fmbl_1-Tval02 = 3000.
  24. append wa_fmbl_1 to et_entityset.
  25. endmethod.

method GROUPSET_GET_ENTITYSET

Сгенерируем (2) и посмотрим в фронтэнде или в браузере:

SAP Fateway Client

результаты oData сервиса в браузере

Теперь переопределим для GROUPSET_GET_ENTITY – метод должен возвращать один объект из GROUPSET_GET_ENTITYSET. Запрограммируем ABAP подпрограмму:

 
 
  1. method GROUPSET_GET_ENTITY.
  2. DATA: ls_key_tab LIKE LINE OF it_key_tab,
  3. lv_fmarea TYPE fmbl-fm_area,
  4. wa_fmbl_1 like er_entity.
  5. READ TABLE it_key_tab INTO ls_key_tab
  6. WITH KEY name = 'GroupId'. " Case sensitive
  7. IF sy-subrc EQ 0.
  8. lv_fmarea = ls_key_tab-value.
  9. ENDIF.
  10. clear wa_fmbl_1.
  11. case lv_fmarea.
  12. when '100'.
  13. wa_fmbl_1-GroupId = '100'.
  14. wa_fmbl_1-GroupName = 'Завод УВК'.
  15. wa_fmbl_1-Tcurr = 'RUB'.
  16. wa_fmbl_1-Tval00 = 10.
  17. wa_fmbl_1-Tval01 = 100.
  18. wa_fmbl_1-Tval02 = 1000.
  19. when '200'.
  20. wa_fmbl_1-GroupId = '200'.
  21. wa_fmbl_1-GroupName = 'Завод ККГ'.
  22. wa_fmbl_1-Tcurr = 'RUB'.
  23. wa_fmbl_1-Tval00 = 20.
  24. wa_fmbl_1-Tval01 = 200.
  25. wa_fmbl_1-Tval02 = 2000.
  26. when '300'.
  27. wa_fmbl_1-GroupId = '300'.
  28. wa_fmbl_1-GroupName = 'Завод ССП'.
  29. wa_fmbl_1-Tcurr = 'RUB'.
  30. wa_fmbl_1-Tval00 = 30.
  31. wa_fmbl_1-Tval01 = 300.
  32. wa_fmbl_1-Tval02 = 3000.
  33. when others.
  34. wa_fmbl_1-GroupId = '000'.
  35. wa_fmbl_1-GroupName = 'Завод OOO'.
  36. wa_fmbl_1-Tcurr = 'RUB'.
  37. wa_fmbl_1-Tval00 = 00.
  38. wa_fmbl_1-Tval01 = 000.
  39. wa_fmbl_1-Tval02 = 0000.
  40. endcase.
  41. MOVE-CORRESPONDING wa_fmbl_1 to er_entity.
  42. endmethod.

method GROUPSET_GET_ENTITY

Активируем переопределенный метод и посмотрим в фронтэнде по адресу /sap/opu/odata/sap/ZCO_BUDGETFS1_SRV/GroupSet(‘100’):

Sap Gateway Client oData

oData сервис возвращает объект с GroupId = ‘100’. Сервис работает.
Аналогично переопределяем остальные методы.

Предыдущий шаг: Внедрение / регистрация сервиса SAP Gateway oData servise ( SEGW)

Следующий шаг: Внедрение Association и Navigation в SAP oData сервис

 

Создание SAP Gateway oData Service (SEGW):

Шаг №1. Определение модели данных. Entity Type. Entity Sets.

Шаг №2. oData: структура типов сущностей на основе ABAP структур (DDIC Structure)

Шаг №3. Внедрение / регистрация сервиса SAP Gateway oData servise ( SEGW)

Шаг №4. Методы исполнения oData сервиса | Service Implementation CRUD

Шаг №5. Внедрение Association и Navigation в SAP oData сервис

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.