zoukankan      html  css  js  c++  java
  • 选择条件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 ).
  • 相关阅读:
    HDU 1022 Train Problem I
    HDU 1702 ACboy needs your help again!
    HDU 1294 Rooted Trees Problem
    HDU 1027 Ignatius and the Princess II
    HDU 3398 String
    HDU 1709 The Balance
    HDU 2152 Fruit
    HDU 1398 Square Coins
    HDU 3571 N-dimensional Sphere
    HDU 2451 Simple Addition Expression
  • 原文地址:https://www.cnblogs.com/SAPxiaox/p/10045017.html
Copyright © 2011-2022 走看看