如何在 WebClient UI 里创建 Value Help

简介: 如何在 WebClient UI 里创建 Value Help

我们先看一下按照本文介绍的步骤完成之后,实现的效果如何。


下图 BusinessPartner ID 字段右侧,有一个正方形小图标,暗示着这个字段分配了一个 F4 Value help.

image.png


点击 F4 快捷键或者点击正方形图标,会看到一个弹出的 Value Help 窗口,我们可以根据各种搜索条件,查询 Business Partner 数据,而不用去记忆 Business Partner 的 ID.


比如根据 First Name 或者 Last Name 进行搜索。


image.png


如上图所示,我们选中搜索结果里第一条记录,则其 id 120 就会自动填写到触发 Value Help 的 BusinessPartner ID 字段上去。



image.png

详细实现步骤

(1) 实现 GET_P 方法。


image.png


代码如下:


CASE iv_property.
     WHEN if_bsp_wd_model_setter_getter=>fp_fieldtype.
       rv_value = cl_bsp_dlc_view_descriptor=>field_type_input.
  ENDCASE.



上面代码的语义是将 BusinessPartner ID 的类型(fieldtype),指定为枚举值 cl_bsp_dlc_view_descriptor=>field_type_input.


实现 GET_V 方法:

create object rv_valuehelp_descriptor type cl_bsp_wd_valuehelp_navdescr
       exporting
          iv_outbound_plug = 'OP_PARTNER_SEARCH'.



给 BusinessPartner ID 字段绑定一个 outbound plug,取名 OP_PARTNER_SEARCH.


(2) 创建一个同名的 outbound plug:OP_PARTNER_SEARCH


image.png


在视图控制器里定义一个 private attribute, 名叫 mv_popup,类型为 TYPE REF TO if_bsp_wd_popup.


实现如下 ABAP 代码:


DATA: lv_node  TYPE REF TO cl_bsp_wd_context_node.
DATA: lv_title TYPE string.
lv_title = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_PROD_CUST/SEARCH_CUSTOMER' ).
mv_popup = comp_controller->window_manager->create_popup(
  iv_interface_view_name = 'SearchHelpWindow'
  iv_usage_name          = 'BPSearch'
  iv_title               = lv_title ).
mv_popup->set_display_mode( if_bsp_wd_popup=>c_display_mode_surrounded ).
mv_popup->set_on_close_event( iv_view = me iv_event_name = 'CLOSEPOPUP' ).
mv_popup->open( 'CLEAR_ALL' ).



(3) 上一步骤的 ABAP 代码里,我们试图打开定义在名叫 BPSearch 的 Component Usage 里的 Popup window,因此这一步,我们需要在 runtime repository 里定义一个 Component usage:


image.png


当 value help 窗口关闭时,event CLOSEPOPUP 会触发。


will be triggered. So we create this event handler and implement it:


因此我们为 CLOSEPOPUP 事件创建 event handler. 在事件处理函数的实现逻辑里,我们从 Component BP_HEAD_SEARCH 的 context node PARTNER 获取用户从搜索结果里选择的 BusinessPartner 记录的内容,存储到我们自己定义的字段 BusinessPartner ID 和 Employee Name 里。


method EH_ONCLOSEPOPUP.
DATA: lv_target_node TYPE REF TO cl_bsp_wd_context_node.
DATA: lr_node      TYPE REF TO cl_bsp_wd_context_node,
             lr_entity    TYPE REF TO if_bol_bo_property_access,
             lr_entity_bp TYPE REF TO if_bol_bo_property_access,
             lv_fullname TYPE BU_DESCRIP,
             lv_bp_id    TYPE bu_partner.
  lr_entity ?= me->typed_context->bpinfo->collection_wrapper->get_current( ).
  ASSERT lr_entity IS NOT INITIAL.
  lr_node = mv_popup->get_context_node( 'PARTNER' ).
  CHECK lr_node IS BOUND.
  lr_entity_bp = lr_node->collection_wrapper->get_current( ).
  CHECK lr_entity IS BOUND AND lr_entity_bp IS BOUND.
  lv_bp_id = lr_entity_bp->get_property_as_string( 'BP_NUMBER' ).
  CHECK lv_bp_id IS NOT INITIAL.
  lr_entity->set_property( iv_attr_name = 'BP_ID' iv_value     = lv_bp_id ).
  CALL FUNCTION 'CRM_BUPA_DESCRIPTION_READ'
      EXPORTING
         iv_partner          = lv_bp_id
      IMPORTING
         ev_description_name = lv_fullname
      EXCEPTIONS
         no_partner_specified  = 1
         no_valid_record_found = 2
         OTHERS                = 3.
   lr_entity->set_property( iv_attr_name = 'BP_NAME' iv_value     = lv_fullname ).



第二步创建 outbound plug OP_PARTNER_SEARCH 时,创建的方法默认是 protected 的,我们需要手动将其更改成 Public.


image.png


如果省去这一步,运行时我们会遇到异常 CX_BSP_WD_INCORRECT_IMPLEMENT,因为 BSP 框架无法调用一个类的 protected 方法。

image.png



相关文章
在 CRM WebClient UI Attachment 区域,创建支持 Web Service 的 Word 文档
在 CRM WebClient UI Attachment 区域,创建支持 Web Service 的 Word 文档
如何在 WebClient UI 里创建 Value Help
如何在 WebClient UI 里创建 Value Help
|
安全 网络安全
SAP CRM WebClient UI 支持的一些 url 参数
SAP CRM WebClient UI 支持的一些 url 参数
SAP WebClient UI创建Value help最详细的步骤
This document could be used for beginners for Webclient UI development who wants to know how to implement value help. Example:
SAP WebClient UI创建Value help最详细的步骤
|
JavaScript 前端开发
如何在SAP WebClient UI里使用jChartFX
如何在SAP WebClient UI里使用jChartFX
134 0
如何在SAP WebClient UI里使用jChartFX
SAP WebClient UI配置决定(configuration)的逻辑介绍
SAP WebClient UI配置决定(configuration)的逻辑介绍
SAP WebClient UI配置决定(configuration)的逻辑介绍
在C4C UI里嵌入CRM WebClient UI
在C4C UI里嵌入CRM WebClient UI
209 0
在C4C UI里嵌入CRM WebClient UI
SAP CRM WebClient UI Selenium UI session的实现
SAP CRM WebClient UI Selenium UI session的实现
SAP CRM WebClient UI Selenium UI session的实现
SAP WebClient UI view controller所有可用的属性列表
SAP WebClient UI view controller所有可用的属性列表
SAP WebClient UI view controller所有可用的属性列表