2.5 Use ALV as Hierarchy
本实例展示如何让ALV显示层次表结构,以及标准表如何表示层次表结构。
1.创建项目,使用ALV组件
声明使用ALV Component
2.修改MAIN视图组件
Properties页签
声明MAIN视图组件使用ALV组件及接口控制器
Layout页签:
创建ViewContainerUIElement作为显示ALV Table的容器
Context页签
创建NODE_SFLIGHT上下文节点,
Methods页签
实现WDDOINIT方法;
获取sflight数据库表数据到上下文节点;
将节点数据和ALV组件绑定;
设置ALV组件显示为层次表结构;
实例代码:
DATA:lo_node TYPE REF TO if_wd_context_node. DATA:lo_element TYPE REF TO if_wd_context_element. DATA:lt_sflight TYPE wd_this->Elements_node_sflight. "获取node_sflight节点 lo_node = wd_context->get_child_node( 'NODE_SFLIGHT' ). "获取数据 SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_sflight FROM sflight. "节点绑定数据 lo_node->bind_table( lt_sflight ).
点击魔术棒,实例化ALV组件
插入代码:
"实例化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组件提供的set_data方法,ALV组件绑定上下文节点数据
"设置ALV数据和节点数据绑定 DATA:lo_INTERFACECONTROLLER TYPE REF TO IWCI_SALV_WD_TABLE . lo_INTERFACECONTROLLER = wd_this->wd_cpifc_alv( ). lo_interfacecontroller->set_data( * only_if_new_descr = " wdy_boolean r_node_data = lo_node " ref to if_wd_context_node ).
点击魔术棒,调用ALV组件提供的get_model方法,获取ALV表配置对象
实例代码:
"设置ALV显示为hierarchy DATA lv_value TYPE REF TO cl_salv_wd_config_table. lv_value = lo_interfacecontroller->get_model( ). "通过cl_salv_wd_config_table对象,设置显示类型 lv_value->if_salv_wd_table_settings~set_display_type( IF_SALV_WD_C_TABLE_SETTINGS=>DISPLAY_TYPE_HIERARCHY ). "设置某一列为层级显示列 DATA:lo_column TYPE REF TO cl_salv_wd_column. lo_column = lv_value->if_salv_wd_column_settings~get_column( 'CARRID' ). lo_column->IF_SALV_WD_COLUMN_HIERARCHY~SET_HIERARCHY_COLUMN( abap_true ). "设置最后一个层次列展开或收拢 lv_value->IF_SALV_WD_TABLE_HIERARCHY~SET_LAST_HIER_COLUMN_AS_LEAF( abap_false ).
3.设置Window,设置VIEW1容器嵌入ALV视图
4.创建Web Dynpro Application,测试运行