感谢肖总的提示,不然还不知道wda的新select option。。。

使用前提:SE24类:CL_WDR_SELECT_OPTIONS_20

核对了多个版本,ERP系统版本要S4 1701往上,CRM系统7 EHP3及以上,没有怎么管这个,不对也别怪我。。。

SE80,查看SELECT OPTION的组件:WD_SELECT_OPTIONS_20是否存在,如果不存在则不能使用。

1.新建WDA组件ZLYTEST_SELECT,并激活

WDA 新SELECT OPTION

2.双击WDA添加SELECT OPTION组件和ALV组件。

WDA 新SELECT OPTION

3。双击COMPONENTCONTROLLER,添加查询结果节点。结构预先定义。

WDA 新SELECT OPTION

4.双击V_MAIN视图,将ALV组件和SELECT OPTION添加到视图中。布局中添加两个UI element

WDA 新SELECT OPTION

5.初始化alv和select option对象

METHOD init_alv .
  DATA: lr_comp_alv    TYPE REF TO if_wd_component_usage,
        lr_comp_if_alv TYPE REF TO iwci_salv_wd_table.
  DATA:gt_zcrmt0060 TYPE TABLE OF zcrmt0060,
       gw_zcrmt0060 LIKE LINE OF gt_zcrmt0060,
       gv_string    TYPE string.

  DATA: lr_column_settings TYPE REF TO if_salv_wd_column_settings,
        lr_column          TYPE REF TO cl_salv_wd_column,
        lr_column_header   TYPE REF TO cl_salv_wd_column_header.

  DATA: lt_column TYPE salv_wd_t_column_ref,
        ls_column TYPE salv_wd_s_column_ref.

****
  DATA: lr_input_field     TYPE REF TO cl_salv_wd_uie_input_field,
        lr_checkbox        TYPE REF TO cl_salv_wd_uie_checkbox,
        lr_image           TYPE REF TO cl_salv_wd_uie_image,
        lr_dropdown_by_key TYPE REF TO cl_salv_wd_uie_dropdown_by_key.
  DATA lr_column_id TYPE string.
****
  DATA: lr_field_amnt TYPE REF TO cl_salv_wd_field   .

  DATA: lv_aggr_rule TYPE REF TO cl_salv_wd_aggr_rule,
        lr_sort_rule TYPE REF TO cl_salv_wd_sort_rule.



  lr_comp_alv = wd_this->wd_cpuse_alv( ) .
  IF lr_comp_alv->has_active_component( ) IS INITIAL.
    lr_comp_alv->create_component( ).
  ENDIF.

  DATA lr_config TYPE REF TO cl_salv_wd_config_table.
  DATA:lr_func_config TYPE REF TO cl_salv_wd_config_table.

  lr_comp_if_alv = wd_this->wd_cpifc_alv( ).
  lr_config      = lr_comp_if_alv->get_model( ).
  lr_func_config      = lr_comp_if_alv->get_model( ).

  lr_column_settings ?= lr_config .
  lt_column = lr_column_settings->get_columns( ).

  SELECT * INTO TABLE gt_zcrmt0060 FROM zcrmt0060 WHERE sales_org = 'O 50000297' AND
    component_name = 'ZHSCRM_DEALER_RET'
    AND alv            = 'ALV'.
  SORT gt_zcrmt0060 BY posit ASCENDING.

*=========================================================

  DATA: l_value  TYPE REF TO cl_salv_wd_config_table.

  l_value = lr_comp_if_alv->get_model( ).
  l_value->if_salv_wd_table_settings~set_fixed_table_layout( abap_false ).  "使列宽不可自动调节
  l_value->if_salv_wd_table_settings~set_width( '100%'  ) .                "设置宽度
  l_value->if_salv_wd_table_settings~set_visible_row_count( '15' ).        "显示的行数
  l_value->if_salv_wd_table_settings~set_scrollable_col_count( '15' ).
  l_value->if_salv_wd_table_settings~set_read_only( abap_true ).
  l_value->if_salv_wd_table_settings~set_display_empty_rows( abap_false ).

  l_value->if_salv_wd_table_settings~set_selection_mode( cl_wd_table=>e_selection_mode-multi_no_lead ).
  l_value->if_salv_wd_function_settings~set_enabled( abap_true ) .
*  l_value->if_salv_wd_std_functions~set_display_as_allowed( abap_false ) .
*  l_value->if_salv_wd_std_functions~set_sort_headerclick_allowed( abap_false ) .
  l_value->if_salv_wd_std_functions~set_edit_check_available( abap_false ) .
  l_value->if_salv_wd_std_functions~set_edit_insert_row_allowed( abap_false ) .
*  l_value->if_salv_wd_std_functions~set_export_allowed( abap_true ) .
*  l_value->if_salv_wd_std_functions~set_view_list_allowed( abap_false ).
  l_value->if_salv_wd_std_functions~set_pdf_allowed( abap_false ) .
  l_value->if_salv_wd_std_functions~set_edit_append_row_allowed( abap_false ) .
  l_value->if_salv_wd_std_functions~set_edit_delete_row_allowed( abap_false ) .
  l_value->if_salv_wd_std_functions~set_filter_filterline_allowed( abap_true ).
  l_value->if_salv_wd_std_functions~set_filter_complex_allowed( abap_true ).
*  l_value->if_salv_wd_std_functions~set_dialog_settings_allowed( abap_true ).

  DATA: lr_table_settings TYPE REF TO if_salv_wd_table_settings.
  lr_table_settings ?= l_value.
  lr_table_settings->set_data_check( '01' ).
  lr_table_settings->set_read_only( abap_false ).

  LOOP AT lt_column INTO ls_column.
    lr_column_id = ls_column-id.
    lr_column = ls_column-r_column.

    lr_column->set_resizable( value = 'X' ).
    lr_column->set_width( value = '100' ).

    READ TABLE gt_zcrmt0060 INTO gw_zcrmt0060 WITH KEY field = ls_column-id.
    IF sy-subrc = 0.
      IF gw_zcrmt0060-visiable = 'X'.
        lr_column_header = ls_column-r_column->create_header( ).
        ls_column-r_column->set_position( gw_zcrmt0060-posit ).
        IF gw_zcrmt0060-text CS 'CRM/'.
          gv_string = gw_zcrmt0060-text.
          lr_column_header->set_text( zcl_otr=>get_text( gv_string ) ).
        ELSE.
          IF gw_zcrmt0060-text IS NOT INITIAL.
            gv_string = gw_zcrmt0060-text.
            lr_column_header->set_text( gv_string ).
          ENDIF.
        ENDIF.
      ELSE.
        ls_column-r_column->set_position( gw_zcrmt0060-posit ).
        lr_column = lr_column_settings->get_column( ls_column-id ).
        lr_column->set_visible( if_wdl_core=>visibility_none ).
      ENDIF.
    ELSE.
        ls_column-r_column->set_position( gw_zcrmt0060-posit ).
        lr_column = lr_column_settings->get_column( ls_column-id ).
        lr_column->set_visible( if_wdl_core=>visibility_none ).
    ENDIF.
    "使用配置表替代原来的case逻辑

  ENDLOOP.
ENDMETHOD.
View Code

相关文章: