感谢肖总的提示,不然还不知道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,并激活

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

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

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

5.初始化alv和select option对象

  1. METHOD init_alv .
  2. DATA: lr_comp_alv TYPE REF TO if_wd_component_usage,
  3. lr_comp_if_alv TYPE REF TO iwci_salv_wd_table.
  4. DATA:gt_zcrmt0060 TYPE TABLE OF zcrmt0060,
  5. gw_zcrmt0060 LIKE LINE OF gt_zcrmt0060,
  6. gv_string TYPE string.
  7.  
  8. DATA: lr_column_settings TYPE REF TO if_salv_wd_column_settings,
  9. lr_column TYPE REF TO cl_salv_wd_column,
  10. lr_column_header TYPE REF TO cl_salv_wd_column_header.
  11.  
  12. DATA: lt_column TYPE salv_wd_t_column_ref,
  13. ls_column TYPE salv_wd_s_column_ref.
  14.  
  15. ****
  16. DATA: lr_input_field TYPE REF TO cl_salv_wd_uie_input_field,
  17. lr_checkbox TYPE REF TO cl_salv_wd_uie_checkbox,
  18. lr_image TYPE REF TO cl_salv_wd_uie_image,
  19. lr_dropdown_by_key TYPE REF TO cl_salv_wd_uie_dropdown_by_key.
  20. DATA lr_column_id TYPE string.
  21. ****
  22. DATA: lr_field_amnt TYPE REF TO cl_salv_wd_field .
  23.  
  24. DATA: lv_aggr_rule TYPE REF TO cl_salv_wd_aggr_rule,
  25. lr_sort_rule TYPE REF TO cl_salv_wd_sort_rule.
  26.  
  27. lr_comp_alv = wd_this->wd_cpuse_alv( ) .
  28. IF lr_comp_alv->has_active_component( ) IS INITIAL.
  29. lr_comp_alv->create_component( ).
  30. ENDIF.
  31.  
  32. DATA lr_config TYPE REF TO cl_salv_wd_config_table.
  33. DATA:lr_func_config TYPE REF TO cl_salv_wd_config_table.
  34.  
  35. lr_comp_if_alv = wd_this->wd_cpifc_alv( ).
  36. lr_config = lr_comp_if_alv->get_model( ).
  37. lr_func_config = lr_comp_if_alv->get_model( ).
  38.  
  39. lr_column_settings ?= lr_config .
  40. lt_column = lr_column_settings->get_columns( ).
  41.  
  42. SELECT * INTO TABLE gt_zcrmt0060 FROM zcrmt0060 WHERE sales_org = 'O 50000297' AND
  43. component_name = 'ZHSCRM_DEALER_RET'
  44. AND alv = 'ALV'.
  45. SORT gt_zcrmt0060 BY posit ASCENDING.
  46.  
  47. *=========================================================
  48.  
  49. DATA: l_value TYPE REF TO cl_salv_wd_config_table.
  50.  
  51. l_value = lr_comp_if_alv->get_model( ).
  52. l_value->if_salv_wd_table_settings~set_fixed_table_layout( abap_false ). "使列宽不可自动调节
  53. l_value->if_salv_wd_table_settings~set_width( '100%' ) . "设置宽度
  54. l_value->if_salv_wd_table_settings~set_visible_row_count( '' ). "显示的行数
  55. l_value->if_salv_wd_table_settings~set_scrollable_col_count( '' ).
  56. l_value->if_salv_wd_table_settings~set_read_only( abap_true ).
  57. l_value->if_salv_wd_table_settings~set_display_empty_rows( abap_false ).
  58.  
  59. l_value->if_salv_wd_table_settings~set_selection_mode( cl_wd_table=>e_selection_mode-multi_no_lead ).
  60. l_value->if_salv_wd_function_settings~set_enabled( abap_true ) .
  61. * l_value->if_salv_wd_std_functions~set_display_as_allowed( abap_false ) .
  62. * l_value->if_salv_wd_std_functions~set_sort_headerclick_allowed( abap_false ) .
  63. l_value->if_salv_wd_std_functions~set_edit_check_available( abap_false ) .
  64. l_value->if_salv_wd_std_functions~set_edit_insert_row_allowed( abap_false ) .
  65. * l_value->if_salv_wd_std_functions~set_export_allowed( abap_true ) .
  66. * l_value->if_salv_wd_std_functions~set_view_list_allowed( abap_false ).
  67. l_value->if_salv_wd_std_functions~set_pdf_allowed( abap_false ) .
  68. l_value->if_salv_wd_std_functions~set_edit_append_row_allowed( abap_false ) .
  69. l_value->if_salv_wd_std_functions~set_edit_delete_row_allowed( abap_false ) .
  70. l_value->if_salv_wd_std_functions~set_filter_filterline_allowed( abap_true ).
  71. l_value->if_salv_wd_std_functions~set_filter_complex_allowed( abap_true ).
  72. * l_value->if_salv_wd_std_functions~set_dialog_settings_allowed( abap_true ).
  73.  
  74. DATA: lr_table_settings TYPE REF TO if_salv_wd_table_settings.
  75. lr_table_settings ?= l_value.
  76. lr_table_settings->set_data_check( '' ).
  77. lr_table_settings->set_read_only( abap_false ).
  78.  
  79. LOOP AT lt_column INTO ls_column.
  80. lr_column_id = ls_column-id.
  81. lr_column = ls_column-r_column.
  82.  
  83. lr_column->set_resizable( value = 'X' ).
  84. lr_column->set_width( value = '' ).
  85.  
  86. READ TABLE gt_zcrmt0060 INTO gw_zcrmt0060 WITH KEY field = ls_column-id.
  87. IF sy-subrc = .
  88. IF gw_zcrmt0060-visiable = 'X'.
  89. lr_column_header = ls_column-r_column->create_header( ).
  90. ls_column-r_column->set_position( gw_zcrmt0060-posit ).
  91. IF gw_zcrmt0060-text CS 'CRM/'.
  92. gv_string = gw_zcrmt0060-text.
  93. lr_column_header->set_text( zcl_otr=>get_text( gv_string ) ).
  94. ELSE.
  95. IF gw_zcrmt0060-text IS NOT INITIAL.
  96. gv_string = gw_zcrmt0060-text.
  97. lr_column_header->set_text( gv_string ).
  98. ENDIF.
  99. ENDIF.
  100. ELSE.
  101. ls_column-r_column->set_position( gw_zcrmt0060-posit ).
  102. lr_column = lr_column_settings->get_column( ls_column-id ).
  103. lr_column->set_visible( if_wdl_core=>visibility_none ).
  104. ENDIF.
  105. ELSE.
  106. ls_column-r_column->set_position( gw_zcrmt0060-posit ).
  107. lr_column = lr_column_settings->get_column( ls_column-id ).
  108. lr_column->set_visible( if_wdl_core=>visibility_none ).
  109. ENDIF.
  110. "使用配置表替代原来的case逻辑
  111.  
  112. ENDLOOP.
  113. ENDMETHOD.
  1. METHOD init_select .
  2. DATA lo_cmp_usage TYPE REF TO if_wd_component_usage.
  3. DATA lo_interfacecontroller TYPE REF TO iwci_wd_select_options_20.
  4.  
  5. "创建selec option组件对象
  6. lo_cmp_usage = wd_this->wd_cpuse_select_option( ).
  7. IF lo_cmp_usage->has_active_component( ) IS INITIAL.
  8. lo_cmp_usage->create_component( ).
  9. ENDIF.
  10. "取到当前的select option 对象
  11. lo_interfacecontroller = wd_this->wd_cpifc_select_option( ).
  12.  
  13. "设置select option全局参数
  14. * wd_comp_controller->mo_select_option = lo_interfacecontroller->init_select_options(
  15. wd_this->mo_select_option = lo_interfacecontroller->init_select_options(
  16. * general_texts = ls_general_texts " wdso_general_texts
  17. * general_visibility = ls_general_visibility " wdso_general_visibility
  18. * global_options = ls_global_options " wdso_global_options
  19. * saved_searches = lt_saved_searches " wdso_tt_value_set
  20. * personalization = ls_pers
  21. actual_search = 'C'
  22. ).
  23.  
  24. "初始化select option的字段
  25. DATA gt_select_attr TYPE wdr_so_t_attributes.
  26. DATA gw_select_attr TYPE wdr_so_s_attributes.
  27. DATA gt_value_set TYPE wdr_context_attr_value_list.
  28. DATA gw_value_set TYPE wdr_context_attr_value.
  29. DATA select_init TYPE wdr_so_t_values.
  30. * DATA VAR_DATE_ATTRIBUTES TYPE WDR_SO_T_OPDEP_VALUESET.
  31. * DATA RENDER_ONLY_INITIAL_DATA TYPE WDY_BOOLEAN.
  32. * DATA PROPOSED_ROWS TYPE WDR_SO_T_VALUES.
  33. gw_select_attr-attribute = 'OBJECT_ID'.
  34. gw_select_attr-attr_type = 'ID'.
  35. gw_select_attr-text = 'OBJECT ID'.
  36. gw_select_attr-dataelement = 'CRMT_OBJECT_ID'.
  37.  
  38. gw_select_attr-value_set = gt_value_set[].
  39. APPEND gw_select_attr TO gt_select_attr.
  40. CLEAR:gw_select_attr.
  41. gw_select_attr-attribute = 'PROCESS_TYPE'.
  42. gw_select_attr-attr_type = 'ID'.
  43. gw_select_attr-text = 'Transaction Type'.
  44. gw_select_attr-dataelement = 'CRMT_PROCESS_TYPE_DB'.
  45. APPEND gw_select_attr TO gt_select_attr.
  46. CLEAR:gw_select_attr.
  47. gw_select_attr-attribute = 'PORTAL'.
  48. gw_select_attr-attr_type = 'CK'.
  49. gw_select_attr-text = 'PORTAL FLAG'.
  50. gw_select_attr-dataelement = 'ZE_PORTAL_FLAG'.
  51. APPEND gw_select_attr TO gt_select_attr.
  52. wd_this->mo_select_option->add_attributes(
  53. EXPORTING
  54. attributes = gt_select_attr
  55. * initial_data = initial_data
  56. * var_date_attributes = var_date_attributes
  57. * render_only_initial_data = render_only_initial_data
  58. * IMPORTING
  59. * proposed_rows = proposed_rows
  60. ).
  61.  
  62. ENDMETHOD.

将ALV和select option初始化的方法加到WDA视图的WDDOINIT里

6.在WINDOW里绑定视图下面的UI对象和组件

7.将ALV数据对象绑定COMPONENTCONTROLLER结果节点

8.创建application,并测试。结果如下:

9.SELECT OPTION的查询参数处理和结果绑定

  1. METHOD onactionsearch .
  2.  
  3. DATA rt_range TYPE wdr_so_t_range_ref.
  4. DATA rs_range TYPE wdr_so_s_range_ref.
  5. DATA max_nr_of_results TYPE i.
  6. DATA max_nr_of_results_is_null TYPE wdy_boolean.
  7. DATA select_all TYPE wdy_boolean.
  8. DATA lo_nd_retab TYPE REF TO if_wd_context_node.
  9. DATA lt_retab TYPE wd_this->elements_retab.
  10. FIELD-SYMBOLS: <fs_object_id> TYPE table,
  11. <fs_flag> TYPE table,
  12. <fs_type> TYPE table.
  13.  
  14. wd_this->mo_select_option->get_input_complete_as_range(
  15. IMPORTING
  16. range_ref = rt_range
  17. max_nr_of_results = max_nr_of_results
  18. max_nr_of_results_is_null = max_nr_of_results_is_null
  19. select_all = select_all
  20. ).
  21.  
  22. LOOP AT rt_range INTO rs_range.
  23. CASE rs_range-attribute.
  24. WHEN 'OBJECT_ID'.
  25. ASSIGN rs_range-range->* TO <fs_object_id>.
  26. WHEN 'PORTAL'.
  27. ASSIGN rs_range-range->* TO <fs_flag>.
  28. WHEN 'PROCESS_TYPE'.
  29. ASSIGN rs_range-range->* TO <fs_type>.
  30. WHEN OTHERS.
  31. ENDCASE.
  32. ENDLOOP.
  33.  
  34. SELECT guid object_id posting_date po_number_ship AS po_number_sold
  35. retailer zzzmodeno
  36. shipto AS ship_to stat_user AS stat
  37. INTO CORRESPONDING FIELDS OF TABLE lt_retab
  38. FROM zhsb_order_index
  39. WHERE object_id IN <fs_object_id>
  40. AND process_type IN <fs_type>.
  41.  
  42. lo_nd_retab = wd_context->get_child_node( name = wd_this->wdctx_retab ).
  43. lo_nd_retab->bind_table( new_items = lt_retab set_initial_elements = abap_true ).
  44.  
  45. ENDMETHOD.

WDA 新SELECT OPTION的更多相关文章

  1. WDA基础十八:Select option配置

    为了省代码...为了方便管理WDA的查询条件... 首先建配置表: 说明: 上面的KEY基本都是维护的维度,可以根据销售组织,根据用户组,根据组件,根据SELECT OPTION的不同...等等,可以 ...

  2. 接前一篇:new select option保存搜索条件

    WD_SELECT_OPTIONS_20新加了很多好玩的东西,尤其是里面的保存搜索条件和使用保存的搜索条件.因为这个比较想WEB UI,所以兴趣比较高一点,WEB UI里是把参数拼成XML存起来的,我 ...

  3. multiple类型的select option在django后台如何取值

    之前前端的select都是单选类型,在新的场景中允许用户选择多个条件, 前端的代码如下: <form action="{% url 'info:result-list' %}" ...

  4. selectDOM操作详解-select option详细解释

    首先从一个面试题来讲,我最近在做前端面试题,题目如下: 完成函数showlmg(),要求能够动态根据下拉列表的选项变化,更新图片的显示<body><script type=" ...

  5. jquery获得select option的值 和对select option的操作

    jQuery获取Select元素,并选择的Text和Value: 1. $("#select_id").change(function(){//code...});   //为Se ...

  6. IE8 下 select option 内容过长 , 展开时信息显示不全解决办法

    IE8 下 select option 内容过长 , 展开时信息显示不全 , 简单折衷的方式就是给 option 加上 title 属性 , 但是又不想一个个的修改,怎么办呢,代码如下 : //sel ...

  7. JQuery 对 Select option 的操作---转载

    <select id="selectID" > <option value="1">1</option> <optio ...

  8. jquery获得select option的值 和对select option的操作【转藏】

    获取Select : 获取select 选中的 text : $("#ddlRegType").find("option:selected").text(); ...

  9. 通过匹配绑定select option的文本值 模糊匹配

    //通过匹配绑定select option的文本值 模糊匹配 $(".class option:contains('文本值')").attr("selected" ...

随机推荐

  1. sql server导出数据,远程连接失败,需要设置权限

    在sql  server management中右键当前连接——>方面 在 服务器配置中 将  RemoteAccessEnabled.RemoteDacEnabled设置为TRUE 安全性—— ...

  2. VMware复制CentOS7,网络配置问题处理

    问题: vm安装CentOS7,静态IP配置完毕后,关闭虚机1,克隆虚拟机为2.克隆出来的虚拟机使用ip addr命令,发现网卡但和之前名称完全不一样变成ens33,也没有ip地址,但/etc/sys ...

  3. Linux替换文件内容sed命令

    sed -e 4a\newline testfile  //在第四行后添加一行,并将结果输出到标准输出.-e,以指定脚本处理文本文件:a,新增. nl /etc/passwd | sed '2,5d' ...

  4. 【Rice】Cultivar versus Variety

    From Cindy Haynes, Department of Horticulture   As a horticulturist, it is important that I use the ...

  5. Oracle初级优化sql

    1.选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理, ...

  6. CustomScrollView

    body: CustomScrollView( slivers: [ SliverList( delegate: SliverChildBuilderDelegate( (context, int i ...

  7. Flutter 输入控件TextField设置内容并保持光标(cursor)在末尾

    TextField( controller: TextEditingController.fromValue(TextEditingValue( // 设置内容 text: inputText, // ...

  8. GTID 跳过事物

    Mysql5.7 stop slave; set @@SESSION.GTID_NEXT='507e80e9-3648-11e9-aa70-fa163e77a52d:20173'; begin; co ...

  9. 制作用户登录界面(JAVA实现)

    设计实现如图所示的个人信息注册.包含单选按钮.多选按钮.下拉框事件. Zuoye类: package example02; import java.awt.event.ActionEvent; imp ...

  10. android开发_ViewGroup(组视图)-- 五大布局

    view组--ViewGroup(组视图) ViewGroup的作用:在view中添加子控件.ViewGroup的5个子类,就是五大布局: (1) LinearLayout  线性布局(常用) (2) ...