• UI5-技术篇-Implementing Expand Entity/Entity Set


    转载:https://blogs.sap.com/2014/07/18/implementing-expand-entityentity-set/

    Requirement

    Considering a basic scenario where i am using  BAPI_PO_GETDETAIL which has multiple output tables and input is PO number

    bapipo.JPG

    Now we shall start with SAP Gateway

    Create Project in SEGW

    Create three entity types and Entity Sets

    Entity Type-1- Header   

    Entity Type-2- Item

    Entity Type-3- Schedule

    po1.JPG

    Entity Set-1- HeaderSet

    Entity Set-2- ItemSet

    Entity Set-3- ScheduleSet

    po2.JPG

    Create Association

    Association-1 –  AssItem (Without key fields mapping)

    Association-2 –  AssSchedule (Without key fields mapping)

    po3.JPG

    Create Navigation

    Navigation-1 –  NavItem

    Navigation-2 –  NavSchedule

    po4.JPG

    Let’s generate runtime artifacts. Click on generate runtime objects button. It will display

    popup . Keep the default class names as-is and click on enter button.

    Once generation is successful, you will get 4 classes. 2 for Data provider and 2 for Model provider.

    po5.JPG

    we have to Redefine the method/IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_EXPANDED_ENTITYSET

    po6.JPG

    Code Snippet

    METHOD /iwbep/if_mgw_appl_srv_runtime~get_expanded_entityset.

    *————————————————————————-*

    *             Deep Structure

    *————————————————————————-*

       DATA:  BEGIN OF ls_order_items.

       INCLUDE       TYPE zcl_zproj_982_mpc=>ts_header.

       DATA: navitem       TYPE STANDARD TABLE OF zcl_zproj_982_mpc=>ts_item WITH DEFAULTKEY.

       DATA: navschedule   TYPE STANDARD TABLE OF zcl_zproj_982_mpc=>ts_schedule WITHDEFAULT KEY,

            END OF ls_order_items,

            ls_item1       TYPE zcl_zproj_982_mpc=>ts_item,

            ls_schedle1    TYPE zcl_zproj_982_mpc=>ts_schedule.

    *————————————————————————-*

    *             Data Declarations

    *————————————————————————-*

       DATA :   ls_item                    TYPE zcl_zproj_982_mpc_ext=>ts_item,

                lt_item                    TYPE TABLE OF zcl_zproj_982_mpc_ext=>ts_item,

                ls_sch                     TYPE zcl_zproj_982_mpc_ext=>ts_schedule,

                lt_sch                     TYPE TABLE OF zcl_zproj_982_mpc_ext=>ts_schedule,

                ls_header                  TYPE zcl_zproj_982_mpc_ext=>ty_header,

                lthead                     TYPE STANDARD TABLE OF bapiekkol,

                lshead                     TYPE bapiekkol,

                lsitem                     TYPE bapiekpo,

                ltitem                     TYPE STANDARD TABLE OF bapiekpo,

                lv_filter_str              TYPE string,

                lt_filter_select_options   TYPE /iwbep/t_mgw_select_option,

                ls_filter                  TYPE /iwbep/s_mgw_select_option,

                ls_filter_range            TYPE /iwbep/s_cod_select_option,

                ls_expanded_clause1        LIKE LINE OF           et_expanded_tech_clauses,

                ls_expanded_clause2        LIKE LINE OF           et_expanded_tech_clauses,

                lv_ebeln                   TYPE ebeln,

                lt_order_items             LIKE TABLE OF ls_order_items,

                ltsch                      TYPE STANDARD TABLE OF bapieket,

                lssch                      TYPE bapieket.

    *————————————————————————-*

    *             Entity Set – HeaderSet

    *————————————————————————-*

       CASE iv_entity_set_name.

         WHEN ‘HeaderSet’.

           LOOP AT it_filter_select_options INTO ls_filter.

             LOOP AT ls_filter–select_options INTO ls_filter_range.

               TRANSLATE ls_filterproperty TO UPPER CASE.

               CASE ls_filterproperty.

                 WHEN ‘PONUMBER’.

                   lv_ebeln = ls_filter_range–low.

                 WHEN OTHERS.

                   ” Log message in the application log

                   me->/iwbep/if_sb_dpc_comm_services~log_message(

                     EXPORTING

                       iv_msg_type   ‘E’

                       iv_msg_id     ‘/IWBEP/MC_SB_DPC_ADM’

                       iv_msg_number 020

                       iv_msg_v1     = ls_filterproperty ).

                   ” Raise Exception

                   RAISE EXCEPTION TYPE /iwbep/cx_mgw_tech_exception

                     EXPORTING

                       textid = /iwbep/cx_mgw_tech_exception=>internal_error.

               ENDCASE.

             ENDLOOP.

           ENDLOOP.

    *————————————————————————-*

    *             Call Method-BAPI_PO_GETDETAIL

    *————————————————————————-*

           CALL FUNCTION ‘BAPI_PO_GETDETAIL’

             EXPORTING

               purchaseorder     = lv_ebeln

               items             ‘X’

               schedules         ‘X’

             IMPORTING

               po_header         = lshead

    *         PO_ADDRESS        =

             TABLES

    *         PO_HEADER_TEXTS   =

               po_items          = ltitem

               po_item_schedules = ltsch.

    *————————————————————————-*

    *             Fill Header Values to Deep Structure

    *————————————————————————-*

           ls_order_items–ponumber = lshead–po_number.

           ls_order_items–ccode = lshead–co_code.

           ls_order_items–doctype = lshead–doc_type.

    *————————————————————————-*

    *             Fill Item values to Deep Structure

    *————————————————————————-*

           LOOP AT ltitem INTO lsitem.

             CLEAR ls_item1.

             ls_item1–ponumber = lsitem–po_number.

             CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’

               EXPORTING

                 input  = ls_item1–ponumber

               IMPORTING

                 output = ls_item1–ponumber.

             ls_item1–poitem = lsitem–po_item.

             ls_item1–material = lsitem–material.

             APPEND ls_item1 TO ls_order_items–navitem.

           ENDLOOP.

    *————————————————————————-*

    *             Fill Schedule values to Deep Strcture

    *————————————————————————-*

           LOOP AT ltsch INTO lssch.

             CLEAR ls_item1.

    *        ls_item1-ponumber = lsitem-po_number.

             ls_schedle1–poitem = lssch–po_item.

             ls_schedle1–serial = lssch–serial_no.

             APPEND ls_schedle1 TO ls_order_items–navschedule.

           ENDLOOP.

    *————————————————————————-*

    *             Assign the Navigation Proprties name to Expanded Tech clauses

    *————————————————————————-*

           ls_expanded_clause1  ‘NAVITEM’.

           ls_expanded_clause2  ‘NAVSCHEDULE’.

           APPEND ls_expanded_clause1 TO et_expanded_tech_clauses.

           APPEND ls_expanded_clause2 TO et_expanded_tech_clauses.

    *————————————————————————-*

    *             Append Deep Strcture Values to Final Internal Table

    *————————————————————————-*

           APPEND ls_order_items TO lt_order_items.

    *————————————————————————-*

    *             Send back Response to Consumer

    *————————————————————————-*

           copy_data_to_ref(

             EXPORTING

               is_data = lt_order_items

             CHANGING

               cr_data = er_entityset ).

         WHEN OTHERS.

       ENDCASE.

    ENDMETHOD.

    Coding Part Done….Lets move to Testing 

    Test Case 1:

    URI : /sap/opu/odata/sap/ZPROJ_982_SRV/HeaderSet?$filter=PoNumber eq ‘4500000163’&$expand=NavItem

    /wp-content/uploads/2014/07/po9_499665.png

    Test Case 2:

    URI : /sap/opu/odata/sap/ZPROJ_982_SRV/HeaderSet?$filter=PoNumber eq ‘4500000163’&$expand=NavItem,NavSchedule

    po8.JPG

    For Expand Entity :-

    From the modelling point of view there wont be any changes

    but in DPC we need to Redefine the method /iwbep/if_mgw_appl_srv_runtime~get_expanded_entity.

    Also there would be a small change in Code , Like Below

    *————————————————————————-*

    *             Deep Structure

    *————————————————————————-*

       DATA:  BEGIN OF ls_order_items.

       INCLUDE       TYPE zcl_zproj_982_mpc=>ts_header.

       DATA: navitem       TYPE STANDARD TABLE OF zcl_zproj_982_mpc=>ts_item WITH DEFAULTKEY.

       DATA: navschedule   TYPE STANDARD TABLE OF zcl_zproj_982_mpc=>ts_schedule WITHDEFAULT KEY,

            END OF ls_order_items,

            ls_item1       TYPE zcl_zproj_982_mpc=>ts_item,

            ls_schedle1    TYPE zcl_zproj_982_mpc=>ts_schedule.

           copy_data_to_ref(

             EXPORTING

               is_data = ls_order_items

             CHANGING

               cr_data = er_entity ).

    Hope this Blog now helps you to implement Expand Entity/Entityset

    Waiting for your feed back and suggestions and more questions 

  • 相关阅读:
    Java 缩放图片工具类,创建缩略图、伸缩图片比例
    93、App Links (应用程序链接)实例
    92、App Permissions(权限管理)实例
    MAC系统教程网站
    Android MVP 详解
    Android开发中,那些让你相见恨晚的方法、类或接口
    用Ultra ISO制作启动U盘装系统
    DB2 Magazine 中文版: 访问 iSeries 数据
    Eclipse快捷键大全
    同步灵无线锂电鼠G11-580HX独特“五灵键”
  • 原文地址:https://www.cnblogs.com/ricoo/p/11243763.html
Copyright © 2020-2023  润新知