组件:Y_SELECT_OPTIONS_20
视图:V_MAIN
窗口:W_MAIN
Application:Y_SELECT_OPTIONS_20
重用标准组件WD_SELECT_OPTIONS_20
创建UI元素
定义属性CMP_SELECT_OPTIONS WD_SELECT_OPTIONS_20。
初始化代码WDDOINIT。
METHOD wddoinit . DATA: lt_attributes TYPE wdr_so_t_attributes, lt_initial_data TYPE wdr_so_t_values. DATA: lt_saved_searches TYPE wdr_context_attr_value_list. DATA: wa_general_texts TYPE wdr_so_s_general_texts, wa_general_visibility TYPE wdr_so_s_general_visibility, wa_global_options TYPE wdr_so_s_global_options. FIELD-SYMBOLS: <wa_attributes> TYPE wdr_so_s_attributes. * Create select options IF wd_this->wd_cpuse_cmp_select_options( )->has_active_component( ) = abap_false. wd_this->wd_cpuse_cmp_select_options( )->create_component( ). ENDIF. * Set general visibility wa_general_visibility-show_max_nr_rows = abap_true. wa_general_visibility-show_button_search = abap_true. wa_general_visibility-show_button_reset = abap_true. wa_general_visibility-show_button_clear = abap_true. wa_general_visibility-button_search_is_default = abap_true. wa_general_visibility-show_header = abap_false. * Set global options wa_global_options-default_max_nr_rows = 100. * Get selection handler wd_this->ao_selection_handler = wd_this->wd_cpifc_cmp_select_options( )->init_select_options( general_texts = wa_general_texts general_visibility = wa_general_visibility global_options = wa_global_options saved_searches = lt_saved_searches ). * Set search attributes APPEND INITIAL LINE TO lt_attributes ASSIGNING <wa_attributes>. <wa_attributes>-attribute = 'PARTNER'. <wa_attributes>-attr_type = if_wd_select_options_20=>e_attribute_types-text. <wa_attributes>-disp_index = 1. <wa_attributes>-value_suggest = abap_true. <wa_attributes>-rtti_type = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( 'BU_PARTNER' ) ). UNASSIGN: <wa_attributes>. APPEND INITIAL LINE TO lt_attributes ASSIGNING <wa_attributes>. <wa_attributes>-attribute = 'TYPE'. <wa_attributes>-attr_type = if_wd_select_options_20=>e_attribute_types-dropdown. <wa_attributes>-disp_index = 2. <wa_attributes>-rtti_type = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( 'BU_TYPE' ) ). UNASSIGN: <wa_attributes>. DATA lt_wdr_context_attr_value_list TYPE wdr_context_attr_value_list. DATA ls_wdr_context_attr_value TYPE wdr_context_attr_value. ls_wdr_context_attr_value-value = 'MC_NAME1'. ls_wdr_context_attr_value-value = '2222'. APPEND ls_wdr_context_attr_value TO lt_wdr_context_attr_value_list. APPEND INITIAL LINE TO lt_attributes ASSIGNING <wa_attributes>. <wa_attributes>-attribute = 'MC_NAME1'. <wa_attributes>-attr_type = if_wd_select_options_20=>e_attribute_types-text. <wa_attributes>-disp_index = 3. <wa_attributes>-value_set = lt_wdr_context_attr_value_list. <wa_attributes>-rtti_type = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( 'BU_MCNAME1' ) ). UNASSIGN: <wa_attributes>. * fill initial data APPEND INITIAL LINE TO lt_initial_data ASSIGNING FIELD-SYMBOL(<wa_initial_data>). <wa_initial_data>-attribute = 'TYPE'. <wa_initial_data>-sign = 'I'. <wa_initial_data>-operator = if_wd_select_options_20=>e_operators-is. <wa_initial_data>-low = 2. UNASSIGN: <wa_initial_data>. APPEND INITIAL LINE TO lt_initial_data ASSIGNING <wa_initial_data>. <wa_initial_data>-attribute = 'PARTNER'. <wa_initial_data>-sign = 'I'. <wa_initial_data>-operator = if_wd_select_options_20=>e_operators-is. <wa_initial_data>-low = '110'. UNASSIGN: <wa_initial_data>. * Add attributes to search help wd_this->ao_selection_handler->add_attributes( attributes = lt_attributes initial_data = lt_initial_data ). FREE: lt_saved_searches, lt_attributes, lt_initial_data. CLEAR: wa_general_texts, wa_general_visibility, wa_global_options. ENDMETHOD.
测试。
如按钮描述、最大结果默认数、范围(包含、大于、等于、小于.....)、设置下拉等都可以控制,具体查看WDR_SO_S_GENERAL_VISIBILITY、WDR_SO_S_GENERAL_VISIBILITY等结构。
补充1:
补充2:取数逻辑
DATA:lo_nd_nod_list TYPE REF TO if_wd_context_node, lt_nod_list TYPE STANDARD TABLE OF ztcmc114a_stru, lt_range_ref TYPE TABLE OF wdr_so_s_range_ref, ls_range_ref TYPE wdr_so_s_range_ref, rt_zdjlx TYPE REF TO data, rt_ernam TYPE REF TO data, rt_erdat TYPE REF TO data. FIELD-SYMBOLS:<fs_zdjlx> TYPE table, <fs_ernam> TYPE table, <fs_erdat> TYPE table. *– Read Data and as range table –* WD_THIS->CMP_SELECT_OPTIONS->get_input_complete_as_range( IMPORTING range_ref = lt_range_ref ). LOOP AT lt_range_ref INTO ls_range_ref. CASE ls_range_ref-attribute. WHEN 'S_ZDJLX'. rt_zdjlx = ls_range_ref-range. WHEN 'S_ERNAM'. rt_ernam = ls_range_ref-range. WHEN 'S_ERDAT'. rt_erdat = ls_range_ref-range. ENDCASE. ENDLOOP. ASSIGN rt_zdjlx->* TO <fs_zdjlx>. ASSIGN rt_ernam->* TO <fs_ernam>. ASSIGN rt_erdat->* TO <fs_erdat>. *– Select Query –* SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_nod_list FROM ztcmc114a WHERE zdjlx IN <fs_zdjlx> AND ernam IN <fs_ernam> AND erdat IN <fs_erdat>. IF sy-subrc EQ 0. SORT lt_nod_list BY zdjlx zposnr. ENDIF. *– Bind Table –* wd_context->get_child_node( name = 'NOD_LIST' )->bind_table( new_items = lt_nod_list set_initial_elements = abap_true ).