Методы исполнения oData сервиса | Service Implementation CRUD
Нам нужно написать ABAP код и логику выбора данных из бэкэнд системы во внутреннюю таблицу (Entity Set) сервиса 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». Нажмем Ок в информационном окне.
В открывшемся окне построителя классов, для метода чтения вызываем контекстное меню и выбираем пункт «Переопределить»:
Для выбранного метода появится повторное определение (переопределение):
Активируем унаследованный метод, сгенерируем сервис и в фронтэнд системе запустим транзакцию /IWFND/GW_CLIENT – SAP Gateway Client. В поле Request URI укажем путь /sap/opu/odata/sap/ZCO_BUDGETFS1_SRV/GroupSet. Получим ответ сервера 200: все хорошо. Вернулась пустая внутренняя таблица.
Теперь запишем простую логику заполнения набора сущностей для метода GROUPSET_GET_ENTITYSET. Для примера, во внутреннюю таблицу запишем три объекта:
- method GROUPSET_GET_ENTITYSET.
- DATA wa_fmbl_1 like line of et_entityset.
- clear wa_fmbl_1.
- wa_fmbl_1-GroupId = '100'.
- wa_fmbl_1-GroupName = 'Завод УВК'.
- wa_fmbl_1-Tcurr = 'RUB'.
- wa_fmbl_1-Tval00 = 10.
- wa_fmbl_1-Tval01 = 100.
- wa_fmbl_1-Tval02 = 1000.
- append wa_fmbl_1 to et_entityset.
- wa_fmbl_1-GroupId = '200'.
- wa_fmbl_1-GroupName = 'Завод ККГ'.
- wa_fmbl_1-Tcurr = 'RUB'.
- wa_fmbl_1-Tval00 = 20.
- wa_fmbl_1-Tval01 = 200.
- wa_fmbl_1-Tval02 = 2000.
- append wa_fmbl_1 to et_entityset.
- wa_fmbl_1-GroupId = '300'.
- wa_fmbl_1-GroupName = 'Завод ССП'.
- wa_fmbl_1-Tcurr = 'RUB'.
- wa_fmbl_1-Tval00 = 30.
- wa_fmbl_1-Tval01 = 300.
- wa_fmbl_1-Tval02 = 3000.
- append wa_fmbl_1 to et_entityset.
- endmethod.
Сгенерируем (2) и посмотрим в фронтэнде или в браузере:
Теперь переопределим для GROUPSET_GET_ENTITY – метод должен возвращать один объект из GROUPSET_GET_ENTITYSET. Запрограммируем ABAP подпрограмму:
- method GROUPSET_GET_ENTITY.
- DATA: ls_key_tab LIKE LINE OF it_key_tab,
- lv_fmarea TYPE fmbl-fm_area,
- wa_fmbl_1 like er_entity.
- READ TABLE it_key_tab INTO ls_key_tab
- WITH KEY name = 'GroupId'. " Case sensitive
- IF sy-subrc EQ 0.
- lv_fmarea = ls_key_tab-value.
- ENDIF.
- clear wa_fmbl_1.
- case lv_fmarea.
- when '100'.
- wa_fmbl_1-GroupId = '100'.
- wa_fmbl_1-GroupName = 'Завод УВК'.
- wa_fmbl_1-Tcurr = 'RUB'.
- wa_fmbl_1-Tval00 = 10.
- wa_fmbl_1-Tval01 = 100.
- wa_fmbl_1-Tval02 = 1000.
- when '200'.
- wa_fmbl_1-GroupId = '200'.
- wa_fmbl_1-GroupName = 'Завод ККГ'.
- wa_fmbl_1-Tcurr = 'RUB'.
- wa_fmbl_1-Tval00 = 20.
- wa_fmbl_1-Tval01 = 200.
- wa_fmbl_1-Tval02 = 2000.
- when '300'.
- wa_fmbl_1-GroupId = '300'.
- wa_fmbl_1-GroupName = 'Завод ССП'.
- wa_fmbl_1-Tcurr = 'RUB'.
- wa_fmbl_1-Tval00 = 30.
- wa_fmbl_1-Tval01 = 300.
- wa_fmbl_1-Tval02 = 3000.
- when others.
- wa_fmbl_1-GroupId = '000'.
- wa_fmbl_1-GroupName = 'Завод OOO'.
- wa_fmbl_1-Tcurr = 'RUB'.
- wa_fmbl_1-Tval00 = 00.
- wa_fmbl_1-Tval01 = 000.
- wa_fmbl_1-Tval02 = 0000.
- endcase.
- MOVE-CORRESPONDING wa_fmbl_1 to er_entity.
- endmethod.
Активируем переопределенный метод и посмотрим в фронтэнде по адресу /sap/opu/odata/sap/ZCO_BUDGETFS1_SRV/GroupSet(‘100’):
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 сервис
Типа всё, тему объяснили? Даже пояснений к параметрам не дали…
На кого рассчитаны эти статьи?