加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

OO实现ALV TABLE 十一:ALV的聚合,排序,过滤

发布时间:2020-12-14 05:53:11 所属栏目:百科 来源:网络整理
导读:? 在 ALV 提供的标准工具栏上我们可以实现输出结果的聚合(最大值,最小值,汇总,平均数),排序,过滤功能,同样在程序里也可以达到这些功能。 ? 1. ?????? 声明聚合,排序,过滤所需要的变量。 DATA: lr_aggregations TYPE REF TO cl_salv_aggregations,
?

ALV提供的标准工具栏上我们可以实现输出结果的聚合(最大值,最小值,汇总,平均数),排序,过滤功能,同样在程序里也可以达到这些功能。

?

1.?????? 声明聚合,排序,过滤所需要的变量。

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.

2.?????? 汇总

?? lr_aggregations->add_aggregation(

????????? columnname = 'DISTANCE'

????????? aggregation = if_salv_c_aggregation=>total

??????? ).

3.???? 最小值

lr_aggregations->add_aggregation(

????????? columnname = 'FLTIME'

????????? aggregation = if_salv_c_aggregation=>minimum

??? ).

4.?????? 过滤

lr_filters->add_filter(

????????? columnname = 'CITYFROM'

????????? sign = 'I'

????????? option = 'NE'

????????? low = 'ROM'

????????? high = ''

).

5.?????? 排序

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_filters????? TYPE REF TO cl_salv_filters,

????????? 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.



注:ALV TABLE部份已经全部完成。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读