简单介绍一下如何在web dynpro中创建select-options。
过程有点繁琐,但是实际上不是很难,毕竟SAP提供了一个标准的组件WDR_SELECT_OPTIONS,可以利用它来实现web dynpro中的select-options。
1,创建webdynpro组件
SE80,输入webdynpro组件名字,点击眼镜按钮,如果组件不存在就会提示创建一个新对象。
选择webdynpro组件类型,
2,使用标准组件WDR_SELECT_OPTIONS
在当前创建的组件(component)下,指定使用的sap 标准组件WDR_SELECT_OPTIONS
在视图Main的properties中也添加WDR_SELECT_OPTIONS
添加后:
3,为select-options创建一个容器(container)
在视图MAIN中创建一个容器(container),用来放置select-options。
双击视图MAIN,然后右键点击rootuielementcontainer,插入一个类型为viewcontaineruielement的element
创建后的样子。。。。
4,将select-options所在的view分配给窗口
右键点出“嵌套视图”,然后左键单击,将视图嵌套到窗口中。
通过F4选中使用的web dynpro组件WND_SELECTION_SCREEN
嵌入后是这个样子:
5,编写代码
首先,在view的属性tab页上创建2个属性,关联类型为IF_WD_SELECT_OPTIONS和IWCI_WDR_SELECT_OPTIONS,
这两个属性会在编程中使用到,用来保存select-options组件的实例(holds the reference to the instance of the Select Options component.)。
注意:由于这个例子比较简单只有一个view使用到了select-options,所以可以把这两个属性创建在view上,如果有多个view使用select-options,为了方便可以将它们创建在Component Controller上,如下:
在视图main的方法WDDOINIT中加入代码,双击WDDOINIT
使用wizard,在instantiate the used component选项中通过F4输入组件WDR_SELECT_OPTIONS,找到SELECT_OPTIONS_COMP
得到自动生成的代码,如下:
然后再加入自定义代码,代码实现的就是将”用户”字段加入到select-options中。
用户字段在表usr02中,
完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
DATA lo_cmp_usage TYPE REF TO if_wd_component_usage. DATA:lr_wdid TYPE REF TO data, lv_typenm TYPE string VALUE 'XUBNAME'."select-options中用到字段的数据元素 lo_cmp_usage = wd_this->wd_cpuse_select_options_comp( ). IF lo_cmp_usage->has_active_component( ) IS INITIAL. lo_cmp_usage->create_component( ). ENDIF. wd_this->m_wd_select = wd_this->wd_cpifc_select_options_comp( ). wd_this->m_handler = wd_this->m_wd_select->init_selection_screen( ). * 创建range table CALL METHOD wd_this->m_handler->create_range_table EXPORTING i_typename = lv_typenm * i_length = * i_decimals = RECEIVING rt_range_table = lr_wdid. * 将XUBNAME字段加入到select-options中 CALL METHOD wd_this->m_handler->add_selection_field EXPORTING i_id = lv_typenm * i_within_block = MC_ID_MAIN_BLOCK * i_description = * i_is_auto_description = ABAP_TRUE it_result = lr_wdid * i_obligatory = ABAP_FALSE * i_complex_restrictions = * i_use_complex_restriction = ABAP_FALSE * i_no_complex_restrictions = ABAP_FALSE * i_value_help_type = IF_WD_VALUE_HELP_HANDLER=>CO_PREFIX_NONE * i_value_help_id = * i_value_help_mode = * i_value_help_structure = * i_value_help_structure_field = * i_help_request_handler = * i_lower_case = * i_memory_id = * i_no_extension = ABAP_FALSE * i_no_intervals = ABAP_FALSE * i_as_checkbox = ABAP_FALSE * i_as_dropdown = ABAP_FALSE * it_value_set = * i_read_only = ABAP_FALSE * i_dont_care_value = * i_explanation = * i_tooltip = * i_is_nullable = ABAP_TRUE * i_format_properties = * i_suggest_values = * i_suggest_filter_method = . |
6,测试
最后别忘了给web dynpro创建一个应用程序
运行结果,用户字段以select-options形式显示了,但是发现上面还有四个其他按钮。。。。
如果想隐藏这几个按钮,可以再加入一段代码
1 2 3 4 5 6 7 |
* 设置全局信息,隐藏取消,检查,重置,复制按钮 CALL METHOD wd_this->m_handler->set_global_options EXPORTING i_display_btn_cancel = abap_false i_display_btn_check = abap_false i_display_btn_reset = abap_false i_display_btn_execute = abap_false. |
打完收工,看到这是不是很怀念abap报表中一句话就能实现的select-options了。。。。
以上。
发表评论