SAP CRM WebClient UI BSP server event

143 阅读1分钟

Created by Jerry Wang on Jul 23, 2014

  1. 创建一个新的value node, assign两个string类型的attribute:
    clipboard1
  2. 添加到configuration view上:

clipboard2
让两个field在UI上显示出来:

  1. 实现get_p_value1:
    clipboard3
    clipboard4

GET_V_VALUE1如下:

METHOD get_v_value1.
  DATA: lt_dropdown_values TYPE bsp_wd_dropdown_table,
        ls_line            LIKE LINE OF lt_dropdown_values,
        lr_ruleparam_id    TYPE REF TO cl_crm_uiu_ddlb.
  ls_line = VALUE #( key = 1 value = 'One' ).
  APPEND ls_line TO lt_dropdown_values.
  ls_line = VALUE #( key = 2 value = 'Two' ).
  APPEND ls_line TO lt_dropdown_values.
  ls_line = VALUE #( key = 3 value = 'Three' ).
  APPEND ls_line TO lt_dropdown_values.
  SORT  lt_dropdown_values BY value ASCENDING.
  CREATE OBJECT lr_ruleparam_id
    EXPORTING
      iv_source_type = 'T'.
  lr_ruleparam_id->set_selection_table( it_selection_table = lt_dropdown_values ).
  rv_valuehelp_descriptor = lr_ruleparam_id.
ENDMETHOD.

GET_V_VALUE2和GET_V_VALUE1 完全一致。GET_P_VALUE2 仅仅少了对ServerEvent分支的处理。
这样runtime时Value1,Value2均以dropdown list的形式显示,entry分别为One, Two, Three.
clipboard5
4. redefine controller method DO_PREPARE_OUTPUT:
clipboard6

测试可以发现如果在Value1的drop down list里选取值之后,会trigger view controller的DO_PREPARE_OUTPUT,因为我们在value1 字段的GET_P 里面为value1 assign了server event。但是在Value2的drop down list里选取值之后,不会trigger任何到backend的roundtrip。

当前drop down list里选取的最新的值可以在value node 的collection wrapper里找到:
clipboard7