您的位置:首页 > 产品设计 > UI/UE

如何给字段增加搜索帮助

2016-04-22 17:14 501 查看
这个问题只需要重定义字段的V方法就行。如果可选的值比较少,想换成下拉框的效果,可以在P方法里面这样写。

METHOD get_p_<字段名>.
CASE iv_property.
WHEN if_bsp_wd_model_setter_getter=>fp_fieldtype.
rv_value = cl_bsp_dlc_view_descriptor=>field_type_picklist.
ENDCASE.
ENDMETHOD.


回到正题,V方法的模板见下面。

METHOD get_v_<字段名>.

DATA:lv_str_index TYPE string,
lv_fname_prefix TYPE string,
lv_idx_string TYPE string.
DATA: lt_inmap TYPE if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab,
ls_map LIKE LINE OF lt_inmap,
<span style="white-space:pre">	</span>lt_outmap TYPE if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab .

* determine prefix in case the F4 is called from a table view
IF iv_index IS INITIAL.
lv_fname_prefix = 'STRUCT'.                             "#EC NOTEXT
ELSE.
lv_idx_string = iv_index.
CONDENSE lv_idx_string NO-GAPS.
CONCATENATE 'TABLE[' lv_idx_string ']' INTO lv_fname_prefix. "#EC NOTEXT
ENDIF.

CONCATENATE lv_fname_prefix '<span style="font-family: Arial, Helvetica, sans-serif;"><字段名></span>' INTO ls_map-context_attr SEPARATED BY '.'. "#EC NOTEXT
ls_map-f4_attr      = '<span style="font-family: Arial, Helvetica, sans-serif;"><另一字段名></span>'."实现页面字段取值联动
APPEND ls_map TO:lt_outmap.

CREATE OBJECT rv_valuehelp_descriptor TYPE cl_bsp_wd_valuehelp_f4descr
EXPORTING
iv_help_id        = '<搜索帮助名>'
iv_help_id_kind   = if_bsp_wd_valuehelp_f4descr=>help_id_kind_comp
iv_input_mapping  = lt_inmap
iv_output_mapping = lt_outmap
iv_object_ref     = me
iv_trigger_submit = 'X'.

ENDMETHOD.

这个是标准的把SAP的搜索帮助搬到UI上面。系统标准UI组件一般不用担心,SAP已经把这一步做好。

对于自建的组件,如果没有建搜索帮助或者其他什么原因,还有更简单粗暴的办法,直接抓数据,如下面的示例。

METHOD get_v_<字段名>.
DATA lt_ddlb  TYPE bsp_wd_dropdown_table.
DATA ls_ddlb  LIKE LINE OF lt_ddlb.
DATA lt_xxx TYPE TABLE OF xxx.
DATA ls_xxx LIKE LINE OF lt_xxx.
DATA lr_ddlb TYPE REF TO cl_crm_uiu_ddlb.
CREATE OBJECT lr_ddlb
EXPORTING
iv_source_type = 'T'.
ls_ddlb-key   = ''.
ls_ddlb-value = ''.
APPEND ls_ddlb TO lt_ddlb."空行可选
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_xxx
FROM xxx
WHERE aaa = bbb.
IF lt_xxx[] IS NOT INITIAL.
SORT lt_xxx BY aaa.
ENDIF.
LOOP AT lt_xxx INTO ls_xxx.
ls_ddlb-key   = ls_xxx-ccc.
ls_ddlb-value = ls_xxx-ddd.
APPEND ls_ddlb TO lt_ddlb.
ENDLOOP.
IF sy-subrc = 0.
lr_ddlb->set_selection_table( it_selection_table = lt_ddlb ).
ENDIF.
rv_valuehelp_descriptor = lr_ddlb.
ENDMETHOD.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CRM UI 字段 搜索帮助 SAP