Web Dynprod的字段搜索帮助可以通过两种方式创建,首先当创建Context-Node-Attribute/Context-Attribute时可以为Attribute设置所需的***Input Help Mode***;其次当使用Select_Options时,通过设置**i_value_help_type时选择if_wd_value_help_handler的某种Attributes的方式达到搜索帮助创建的目的。
- 设置Context-Node-Attribute/Context-Attribute的Input Help Mode
- 设置Select_Options的i_value_help_type
两种方式下的搜索帮助详细内容如上述所示,本文仅将OVS的两种方式展开表述,其他大多方式相对比较简便。当然Freely Programmed除外,自由度比较大,可以创建一些比较“炫酷”的搜索帮助,比如可以实现多个Tabstrips的搜索帮助。
- Context-Node-Attribute/Context-Attribute
-
双击Object Name在已使用的组件中添加新的组件*** WDR_OVS***,并为其命名
-
通过设置Input Help Mode的值为Object Value Selector的方式设置OVS Component Usage需要引用OVS组件(上述的***WDR_OVS***所命的名字)。
-
接下来就是要对搜索帮助的实现,创建一个“1 Event Handler”类型的Method(可以在Componentcontroller或视图内创建,要记得在Properties中将该组件新建出来哦!不然在Method的Event中是引用不到的)。
-
创建出Event→OVS的Method后,系统会自动带出一些代码的框架。系统自动带出的入参是 ovs_callback_object REF TO if_wd_ovs。搜索帮助的实现分为四个阶段,即 ovs_callback_object→phase_indicator
-
属性 | 说明 | 初始值 |
---|---|---|
co_phase_0 | Set Configuration(设置配置) | 0 |
co_phase_1 | Preassign Entry Values(预先指定条目的值) | 1 |
co_phase_2 | Fill Value List(填充值列表) | 2 |
co_phase_3 | Value Return(值返回) | 3 |
5. 自动创建出的DATA具体含义,随后便可以通过相应的数据类型对代码进行修改
Data | Type | 含义 |
---|---|---|
ls_search_input | lty_stru_input(内容自定义) | 输入条件 |
lt_search_list | lty_stru_list(内容自定义) | 表格内容 |
ls_text | wdr_name_value | 输入条件的标签文本(ls) |
lt_label_texts | wdr_name_value_list | 输入条件的标签文本(list) |
lt_column_texts | wdr_name_value_list | 表格列头文本 |
lv_window_title | string | 窗口名 |
lv_table_header | string | 表格名 |
- Select_Options——OVS
- Select_Options的OVS是通过Select_Option初始化时添加元素设置***i_value_help_type = if_wd_value_help_handler=>co_prefix_ovs***的方式实现的。
RT_RANGE_TABLE = WD_THIS->M_HANDLER->CREATE_RANGE_TABLE( I_TYPENAME = 'ZDOC_PXH' )."类型"
WD_THIS->M_HANDLER->ADD_SELECTION_FIELD(
I_ID = 'S_PXH'
I_DESCRIPTION = '文档号'
I_OBLIGATORY = ABAP_FALSE
IT_RESULT = RT_RANGE_TABLE
I_TOOLTIP = LV_TOOLTIP
I_VALUE_HELP_TYPE = IF_WD_VALUE_HELP_HANDLER=>CO_PREFIX_OVS
).
1. 接下来要进行OVS代码的实现,在Properties中引用已创建的Select_Options组件,引用方式与上述OVS组件的引用方式相同。在Methods中创建Method Type为“1 Event Handler”Method,Event 引用Select_Options组件的ON_OVS。这样OVS方法就创建好啦。
2. Select_Options OVS 的实现与上一种方式OVS实现的方式不同点在于创建Event Handler后系统自动带出的入参。Select_Options自动带出的入参是 ***if_wd_select_options=>t_ovs_data 类型的 i_ovs_data*** ,所以在点搜索帮助的时候就需要一个元素判断的过程啦。
CASE i_ovs_data-m_selection_field_id.
WHEN 'S_PXH'. "元素名称"
WHEN ''.
WHEN ''.
ENDCASE.
判断完具体是要实现 **哪个元素** 的OVS后,剩下的OVS具体实现的代码就与上述方式相同了,不再赘述。