简单介绍一下如何在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了。。。。
以上。



发表评论