Создание oData сервиса. Часть 5. Deep entity получение данных

В предыдущих частях(три, четыре) было рассмотрено получение зависимых данных из системы SAP. В данной части получим данные из внешнего источника в систему. Для для этого будем использовать метод CREATE_DEEP_ENTITY.
Получать будем туже самую структуру, что отправляли в предыдущем посте.

Первым делом в классе необходимо модифицировать класс *MPC_EXT.
Создадим тип данных который мы хоти получать.

 

После этого в методе DEFINE  для сущности прописать новый тип. Вот такой код требуется:

 

Переходим в класс *DPC_EXT и переопределяем метод /iwbep/if_mgw_appl_srv_runtime~create_deep_entity
В нем определяем необходимые код


Строка для запуска теста: /sap/opu/odata/sap/ZZ_TEST_SERVICE_SRV/EntitySpfliSet
Отправка происходит методом POST все остальные данные прописываем в теле. В зависимости от входной структуры система автоматически выберет, что ей вызвать. Обычный CREATE_ENTITY, если передали плоскую структуру
Пример: 


Если мы передаем вложенные структуры, пусть даже и пустую, выполнится CREATE_DEEP_ENTITY.

Хотя метод POST служит в первую очередь для создания записей, при вызове метода CREATE_DEEP_ENTITY можно возвращать данные. Но есть один тонкий момент связанный с вложенными структурами. Чтобы можно было вернуть данные во вложенной таблице, надо чтобы изначально при вызове метода, была передана хотя бы пустая таблица
Определим метод CREATE_DEEP_ENTITY следующим образом

Здесь при выполнении запроса не подали таблицу EntitySbokSet и хотя мы ее заполнили во время выполнения метода. В выходных данных ее не будет.

Во-втором случае, подадим ее с пустым значением. В результате выходные данные заполнены

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

Ваш адрес email не будет опубликован.