在ALV提供的标准工具栏上我们可以实现输出结果的聚合(最大值,最小值,汇总,平均数),排序,过滤功能,同样在程序里也可以达到这些功能。 <!--[if !supportLists]-->1. <!--[endif]-->声明聚合,排序,过滤所需要的变量。 DATA: lr_aggregations TYPE REF TO cl_salv_aggregations, lr_filters TYPE REF TO cl_salv_filters, lr_sorts type ref to cl_salv_sorts.
<!--[if !supportLists]-->2. <!--[endif]-->汇总
lr_aggregations->add_aggregation( columnname = 'DISTANCE' aggregation = if_salv_c_aggregation=>total ).
<!--[if !supportLists]-->3. <!--[endif]-->最小值
lr_aggregations->add_aggregation( columnname = 'FLTIME' aggregation = if_salv_c_aggregation=>minimum ).
<!--[if !supportLists]-->4. <!--[endif]-->过滤
lr_filters->add_filter( columnname = 'CITYFROM' sign = 'I' option = 'NE' low = 'ROM' high = '' ).
<!--[if !supportLists]-->5. <!--[endif]-->排序
lr_sorts->add_sort( columnname = 'CITYFROM' sequence = if_salv_c_sort=>sort_down subtotal = 'X' obligatory = 'X' ).
下面是程序的所有代码:
REPORT y_xin_002. *变量定义 TYPES: BEGIN OF gs_spfli, mandt TYPE spfli-mandt, carrid TYPE spfli-carrid, connid TYPE spfli-connid, countryfr TYPE spfli-countryfr, cityfrom TYPE spfli-cityfrom, airpfrom TYPE spfli-airpfrom, countryto TYPE spfli-countryto, cityto TYPE spfli-cityto, airpto TYPE spfli-airpto, fltime TYPE spfli-fltime, deptime TYPE spfli-deptime, arrtime TYPE spfli-arrtime, distance TYPE spfli-distance, distid TYPE spfli-distid, fltype TYPE spfli-fltype, period TYPE spfli-period, END OF gs_spfli.
TYPES ty_spfli TYPE gs_spfli OCCURS 0. *----------------------------------------------------------------------* * CLASS lcl_alv DEFINITION *----------------------------------------------------------------------* * ALV操作类(定义) *----------------------------------------------------------------------* CLASS lcl_alv DEFINITION. PUBLIC SECTION. METHODS: getdata "取得要显示的数据 RETURNING value(lt_tab) TYPE ty_spfli, alv_full "全屏Grid列表处理方法 IMPORTING value(lt_tab) TYPE ty_spfli. PRIVATE SECTION. DATA: gr_table TYPE REF TO cl_salv_table. ENDCLASS. "lcl_alv DEFINITION *----------------------------------------------------------------------* * CLASS lcl_alv IMPLEMENTATION *----------------------------------------------------------------------* * ALV操作类(实现) *----------------------------------------------------------------------* CLASS lcl_alv IMPLEMENTATION. *取得要显示的数据 METHOD getdata. SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_tab FROM spfli. ENDMETHOD. "getdata *输出全屏网格列表的方法 METHOD alv_full. DATA: lr_functions TYPE REF TO cl_salv_functions_list, lr_aggregations TYPE REF TO cl_salv_aggregations, lr_sorts type ref to cl_salv_sorts. "创建实例 TRY. cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = lt_tab ). CATCH cx_salv_msg. ENDTRY. "ALV标准功能 lr_functions = gr_table->get_functions( ). lr_functions->set_all( 'X' ). lr_aggregations = gr_table->get_aggregations( ). lr_filters = gr_table->get_filters( ). lr_sorts = gr_table->get_sorts( ). TRY. "汇总 lr_aggregations->add_aggregation( columnname = 'DISTANCE' aggregation = if_salv_c_aggregation=>total ). "最小值 lr_aggregations->add_aggregation( columnname = 'FLTIME' aggregation = if_salv_c_aggregation=>minimum ). "过滤 lr_filters->add_filter( columnname = 'CITYFROM' sign = 'I' option = 'NE' low = 'ROM' high = '' ). "排序 lr_sorts->add_sort( columnname = 'CITYFROM' sequence = if_salv_c_sort=>sort_down subtotal = 'X' obligatory = 'X' ). CATCH cx_salv_data_error. CATCH cx_salv_existing. CATCH cx_salv_not_found. ENDTRY. "显示列表 gr_table->display( ). ENDMETHOD. "alv_full ENDCLASS. "lcl_alv IMPLEMENTATION *&---------------------------------------------------------------------* *& Form f_main *&---------------------------------------------------------------------* * 整合数据,执行 *----------------------------------------------------------------------* FORM f_main. DATA: lt_tab TYPE ty_spfli, lr_alv TYPE REF TO lcl_alv. CREATE OBJECT lr_alv. "取得要显示的数据 lt_tab = lr_alv->getdata( ). lr_alv->alv_full( lt_tab ). ENDFORM. "f_main *执行动作 START-OF-SELECTION. PERFORM f_main.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lhx20/archive/2008/08/26/2833234.aspx (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|