Created by Jerry Wang on Jul 23, 2014
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.
4. redefine controller method DO_PREPARE_OUTPUT:
测试可以发现如果在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里找到: