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
  1. 双击 Object Name 在已使用的组件中添加新的组件 WDR_OVS,并为其命名

     
  2.  通过设置 Input Help Mode 的值为 Object Value Selector 的方式设置 OVS Component Usage需要引用OVS组件(上述的 WDR_OVS 所命的名字)。

  3.  接下来就是要对搜索帮助的实现,创建一个 “1 Event Handler” 类型的 Method(可以在Componentcontroller 或视图内创建,要记得在 Properties 中将该组件新建出来哦!不然在Method 的 Event 中是引用不到的)。

  4. 创建出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具体含义,随后便可以通过相应的数据类型对代码进行修改 
    DataType含义
    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
  1. 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
    ).
  2. 接下来要进行 OVS 代码的实现,在 Properties 中引用已创建的 Select_Options 组件,引用方式与上述 OVS 组件的引用方式相同。在 Methods 中创建 Method Type 为 “1 Event Handler” 的 Method ,Event 引用 Select_Options 组件的 ON_OVS 。这样OVS方法就创建好啦。 

  3. 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具体实现的代码就与上述方式相同了,不再赘述。