选择条件WD_SELECT_OPTIONS_20

组件: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 ).

 

posted @ 2018-11-30 16:37  SAPxiao  阅读(715)  评论(0编辑  收藏  举报