2.8 Creat Total or Subtotal in ALV
本實例展示如何創建ALV顯示航班信息,並且根據不同幣別匯眾價格Price欄位。
1.創建Web Dynpro Component,聲明使用ALV組件
2.這次直接在組件控制器上下文創建節點
設置NODE_SFLIGHT和ALV接口控制器的上下文Context:DATA綁定
3.設置MAIN視圖組件
Properties頁簽
聲明使用ALV組件及組件接口控制器
Layout頁簽
創建ViewContainterUIElement視圖控件,作為顯示ALV的容器
Context頁簽
直接將組件控制器的上下文節點拖動到MAIN視圖組件上下文節點下,創建映射關係
Methods頁簽
實現WDDOINIT方法,查詢sflight表數據,將數據綁定到Context:Node_Sflight節點;
創建Total匯總規則;
代碼實例:
method WDDOINIT .
DATA:lo_node TYPE REF TO if_wd_context_node.
DATA:lt_sflight TYPE wd_this->Elements_node_sflight.
"查詢數據
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_sflight FROM sflight.
"獲取節點
lo_node = wd_context->get_child_node( 'NODE_SFLIGHT' ).
lo_node->bind_table( lt_sflight ).
"實例化ALV組件
DATA:lo_cmp_usage type ref to if_wd_component_usage.
lo_cmp_usage = wd_this->wd_cpuse_alv( ).
if lo_cmp_usage->has_active_component( ) is initial.
lo_cmp_usage->create_component( ).
endif.
"因為在ALV:INTERFACECONTROLLER_USAGE中設置DATA和NODE_SFLIGHT綁定
"這裡不需要使用set_data方法綁定
"獲取config model
DATA:lo_INTERFACECONTROLLER TYPE REF TO IWCI_SALV_WD_TABLE .
lo_INTERFACECONTROLLER = wd_this->wd_cpifc_alv( ).
DATA:lv_value TYPE ref to cl_salv_wd_config_table.
lv_value = lo_interfacecontroller->get_model( ).
"設置字段
DATA:lo_field TYPE REF TO cl_salv_wd_field.
"獲取PRICE字段
lo_field = lv_value->IF_SALV_WD_FIELD_SETTINGS~GET_FIELD( 'PRICE' ).
"設置匯總
lo_field->IF_SALV_WD_AGGR~CREATE_AGGR_RULE( AGGREGATION_TYPE = IF_SALV_WD_C_AGGREGATION=>AGGRTYPE_TOTAL ).
lo_field = lv_value->IF_SALV_WD_FIELD_SETTINGS~GET_FIELD( 'CURRENCY' ).
"設置CURR排序
lo_field->IF_SALV_WD_SORT~CREATE_SORT_RULE(
EXPORTING
SORT_ORDER = IF_SALV_WD_C_SORT=>SORT_ORDER_ASCENDING
SORT_POSITION = 0
GROUP_AGGREGATION = abap_true
).
endmethod.
4.設置Window窗口組件
5.創建Web Dynpro Application,運行測試