­

使用cds view annotation实现SAP UI5的drop down list效果

  • 2020 年 1 月 13 日
  • 筆記
class ZCL_ZJERRY_SANDBOX_DPC_EXT definition    public    inheriting from ZCL_ZJERRY_SANDBOX_DPC    create public .    public section.      methods /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_ENTITYSET      redefinition .  protected section.  private section.      methods FILL_STATUS_TEXT      changing        !CR_ENTITYSET type ref to DATA .    methods GET_DOMAIN_LIST      returning        value(RT_RESULT) type DD07V_T .    methods GET_STATUS_LIST      exporting        !ER_ENTITYSET type ref to DATA .  ENDCLASS.        CLASS ZCL_ZJERRY_SANDBOX_DPC_EXT IMPLEMENTATION.      * <SIGNATURE>---------------------------------------------------------------------------------------+  * | Instance Public Method ZCL_ZJERRY_SANDBOX_DPC_EXT->/IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_ENTITYSET  * +-------------------------------------------------------------------------------------------------+  * | [--->] IV_ENTITY_NAME                 TYPE        STRING(optional)  * | [--->] IV_ENTITY_SET_NAME             TYPE        STRING(optional)  * | [--->] IV_SOURCE_NAME                 TYPE        STRING(optional)  * | [--->] IT_FILTER_SELECT_OPTIONS       TYPE        /IWBEP/T_MGW_SELECT_OPTION(optional)  * | [--->] IT_ORDER                       TYPE        /IWBEP/T_MGW_SORTING_ORDER(optional)  * | [--->] IS_PAGING                      TYPE        /IWBEP/S_MGW_PAGING(optional)  * | [--->] IT_NAVIGATION_PATH             TYPE        /IWBEP/T_MGW_NAVIGATION_PATH(optional)  * | [--->] IT_KEY_TAB                     TYPE        /IWBEP/T_MGW_NAME_VALUE_PAIR(optional)  * | [--->] IV_FILTER_STRING               TYPE        STRING(optional)  * | [--->] IV_SEARCH_STRING               TYPE        STRING(optional)  * | [--->] IO_TECH_REQUEST_CONTEXT        TYPE REF TO /IWBEP/IF_MGW_REQ_ENTITYSET(optional)  * | [<---] ER_ENTITYSET                   TYPE REF TO DATA  * | [<---] ES_RESPONSE_CONTEXT            TYPE        /IWBEP/IF_MGW_APPL_SRV_RUNTIME=>TY_S_MGW_RESPONSE_CONTEXT  * | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION  * | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION  * +--------------------------------------------------------------------------------------</SIGNATURE>    METHOD /iwbep/if_mgw_appl_srv_runtime~get_entityset.      CASE iv_entity_name.        WHEN 'OrderStatus'.          get_Status_list( IMPORTING er_entityset = er_entityset ).        WHEN OTHERS.          TRY.              CALL METHOD super->/iwbep/if_mgw_appl_srv_runtime~get_entityset                EXPORTING                  iv_entity_name           = iv_entity_name                  iv_entity_set_name       = iv_entity_set_name                  iv_source_name           = iv_source_name                  it_filter_select_options = it_filter_select_options                  it_order                 = it_order                  is_paging                = is_paging                  it_navigation_path       = it_navigation_path                  it_key_tab               = it_key_tab                  iv_filter_string         = iv_filter_string                  iv_search_string         = iv_search_string                  io_tech_request_context  = io_tech_request_context                IMPORTING                  er_entityset             = er_entityset                  es_response_context      = es_response_context.            CATCH /iwbep/cx_mgw_busi_exception .            CATCH /iwbep/cx_mgw_tech_exception .          ENDTRY.            IF iv_entity_name = 'Z_C_OrderType'.            fill_status_text( CHANGING cr_entityset = er_entityset ).          ENDIF.      ENDCASE.    ENDMETHOD.      * <SIGNATURE>---------------------------------------------------------------------------------------+  * | Instance Private Method ZCL_ZJERRY_SANDBOX_DPC_EXT->FILL_STATUS_TEXT  * +-------------------------------------------------------------------------------------------------+  * | [<-->] CR_ENTITYSET                   TYPE REF TO DATA  * +--------------------------------------------------------------------------------------</SIGNATURE>    method FILL_STATUS_TEXT.      FIELD-SYMBOLS: <data> TYPE zcl_zjerry_sandbox_mpc=>tt_z_c_ordertype.        ASSIGN cr_entityset->* TO <data>.        DATA(idd07v) = get_domain_list( ).        LOOP AT <data> ASSIGNING FIELD-SYMBOL(<line>).        READ TABLE idd07v ASSIGNING FIELD-SYMBOL(<dom>) WITH KEY domvalue_l = <line>-order_status.        IF sy-subrc = 0.           <line>-order_status_text = <dom>-ddtext.        ENDIF.      ENDLOOP.        endmethod.      * <SIGNATURE>---------------------------------------------------------------------------------------+  * | Instance Private Method ZCL_ZJERRY_SANDBOX_DPC_EXT->GET_DOMAIN_LIST  * +-------------------------------------------------------------------------------------------------+  * | [<-()] RT_RESULT                      TYPE        DD07V_T  * +--------------------------------------------------------------------------------------</SIGNATURE>    method GET_DOMAIN_LIST.      CALL FUNCTION 'DD_DOMVALUES_GET'        EXPORTING          domname        = 'ZORDER_STATUS_DOMAIN'   "<-- Your Domain Here          text           = 'X'          langu          = sy-langu        TABLES          dd07v_tab      = rt_result        EXCEPTIONS          wrong_textflag = 1          OTHERS         = 2.    endmethod.      * <SIGNATURE>---------------------------------------------------------------------------------------+  * | Instance Private Method ZCL_ZJERRY_SANDBOX_DPC_EXT->GET_STATUS_LIST  * +-------------------------------------------------------------------------------------------------+  * | [<---] ER_ENTITYSET                   TYPE REF TO DATA  * +--------------------------------------------------------------------------------------</SIGNATURE>    METHOD get_status_list.      FIELD-SYMBOLS: <data> TYPE STANDARD table.        CREATE DATA er_entityset TYPE zcl_zjerry_sandbox_mpc=>tt_orderstatus.      ASSIGN er_entityset->* TO <data>.        DATA(idd07v) = get_domain_list( ).        LOOP AT idd07v ASSIGNING FIELD-SYMBOL(<value>).         DATA(list) = value zcl_zjerry_sandbox_mpc=>ts_orderstatus(         code = <value>-domvalue_l text = <value>-ddtext ).         APPEND list to <data>.      ENDLOOP.    ENDMETHOD.  ENDCLASS.    class ZCL_ZJERRY_SANDBOX_MPC_EXT definition    public    inheriting from ZCL_ZJERRY_SANDBOX_MPC    create public .    public section.      methods DEFINE      redefinition .  protected section.  private section.  ENDCLASS.        CLASS ZCL_ZJERRY_SANDBOX_MPC_EXT IMPLEMENTATION.      * <SIGNATURE>---------------------------------------------------------------------------------------+  * | Instance Public Method ZCL_ZJERRY_SANDBOX_MPC_EXT->DEFINE  * +-------------------------------------------------------------------------------------------------+  * | [!CX!] /IWBEP/CX_MGW_MED_EXCEPTION  * +--------------------------------------------------------------------------------------</SIGNATURE>    method DEFINE.      super->define( ).      zcl_fis_shlp_annotation=>create(        io_odata_model = model        io_vocan_model = vocab_anno_model        iv_namespace = 'sap'        iv_entitytype = 'Z_C_OrderType'        iv_property = 'order_status'        iv_search_help = space        iv_search_supported = abap_false        iv_search_help_field = space        iv_valuelist_entityset = 'OrderStatusEntitySet'        iv_valuelist_property = 'Code' ##NO_TEXT        )->add_display_parameter( iv_valuelist_property  = 'Text' ).        data(lo_txt_property) = model->get_entity_type( 'Z_C_OrderType' )->get_property( 'order_status' ).      lo_txt_property->set_value_list( /iwbep/if_mgw_odata_property=>gcs_value_list_type_property-fixed_values ).        data(lo_text_anno) = lo_txt_property->/iwbep/if_mgw_odata_annotatabl~create_annotation( 'sap' ).      lo_text_anno->add( iv_key = 'text' iv_value = 'order_status_text').        lo_txt_property = model->get_entity_type( 'OrderStatus' )->get_property( 'Code' ).      lo_txt_property->set_value_list( /iwbep/if_mgw_odata_property=>gcs_value_list_type_property-fixed_values ).        lo_text_anno = lo_txt_property->/iwbep/if_mgw_odata_annotatabl~create_annotation( 'sap' ).      lo_text_anno->add( iv_key = 'text' iv_value = 'Text').    endmethod.  ENDCLASS.