Опция $expand: использование вложенных oData запросов в SAPUI5

Опция запроса $expand очень эффективна и позволяет нам предоставлять несколько entity types (cущностей) и / или entity sets (наборов сущностей) в одном вызове oData службы. Параметр $expand позволяет приложению читать связанные объекты с их навигационными свойствами. Это вместо того, чтобы выполнять несколько вызовов впоследствии.

Предварительные подготовки:

  1. Рабочий oData сервис. Для работы запроса $expand необходимы ассоциации или навигации. Метод get_expanded_entityset переопределять не будем, можно оставить унаследованный метод.
    Здесь можно посмотреть все шаги создания oData сервиса SAP.
  2. Созданный SAPUI5 проект.

Для примера будем использовать элемент управления sap.m.List внутри другого sap.m.List в SAPUI5 проекте.
Откроем View в проекте и вставим такой код:

 
 
<mvc:View controllerName="odataaaa.controller.View1"
  xmlns:html="http://www.w3.org/1999/xhtml"
  xmlns:f="sap.ui.layout.form"
  xmlns:mvc="sap.ui.core.mvc"
  xmlns="sap.m">
  <App>
 <pages>
   <Page title="{i18n>title}">
  <content>
     <List items="{path : '/GroupSet' , parameters:{expand : 'GroupProgram'} }">
       <items>
         <CustomListItem>
           <content>
             <Title text="Группа программ: {GroupName}"></Title>
             <List items="{GroupProgram}">
               <items>
                 <ObjectListItem title="Программа: {ProgramName}" intro="Стоимость программы:{Tval09}">
                 </ObjectListItem>
              </items>
            </List>
          </content>
       </CustomListItem>
     </items>
     </List>  
   </content>
   </Page>
 </pages>
  </App>
</mvc:View>

Первый <List items=”{path : ‘/GroupSet’ , parameters:{expand : ‘GroupProgram’} }”>

указали элемент (items) GroupSet – набор сущностей (Entity Set) по группам программ нашего oData сервиса. Указали в протоколе oData параметр Expand, который позволяет приложению читать связанные объекты с их навигационными свойствами: навигацию GroupProgram, который связывает наборы сущностей GroupSet и ProgramSet.

Второй <List items=”{GroupProgram}”>

указали навигацию GroupProgram, как привязку (bind) к элементу . Будет выводить все программы, относящиеся одной группе.

Запускаем приложение. И получаем вообще без кодирования (программирования) в контроллере (controller) отличный результат в виде вложенных элементов:

Результат работы $expand в oData сервисе

Параметр $expand работает.
Также можно тестировать работу параметра $expand во фронтэнд системе, в Sap Gateway Client (транзакция /IWFND/GW_CLIENT). Запишем в Request URI следующую строку:

/sap/opu/odata/sap/ZCO_BUDGETFS_SRV/GroupSet?$expand=GroupProgram&$format=json

Результат работы:

SAP Gateway Client result expand

1 комментариев для “Опция $expand: использование вложенных oData запросов в SAPUI5”

  1. Вот инетересно, лучше в сдс сделать ассоциацию, и потом в проекте сделать $expand или если одата реализована через SEGW то может в нем создать энтитиСэт, переопределить метод и добавить в нем реализацию?

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

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

 

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