Function實現ALV Table七:彙總,分類彙總,排序,過濾

ALV標準功能彙總,分類彙總,排序,過濾這些功能除了可以直接使用它的標準功能按鈕之外,你也可以在程序裏設定,讓ALV列表第一次顯示出來就已經使用了這些功能。

REUSE_ALV_GRID_DISPLAY實現的ALV不能在程序設定輸出字段的平均值,最小值,最大值等標準功能。用OO方式實現ALV輸出的就可以,請參考

http://blog.csdn.net/lhx20/archive/2008/08/26/2833234.aspx

 

 


一、排序

排序用到類型slis_t_sortinfo_alv,按條件把過濾的字段和規則設置好,添加到一個參考slis_t_sortinfo_alv類型的內表,在調用Function的時候指導內表賦給it_sort參數

二、過濾

過濾用到類型slis_t_filter_alv,按條件把排序的字段和規則設置好,添加到一個參考slis_t_filter_alv類型的內表,在調用Function的時候把內表的值賦給it_fitler參數

三、分類彙總

分類彙總是彙總和排序兩個功能來進行分類和彙總的。按照排序的字段的值進行分類,對已經彙總的字段進行分類彙總。在設置排序的時候設置類型slis_t_sortinfo_alvsubtot ‘X’ 就可以了。

四、彙總

彙總是設置要彙總的字段的Fieldcat屬性,設置slis_t_fieldcat_alv-do_sum = ‘X’

 

下面是源代碼

TYPE-POOLS slis.

 

TYPES ty_tab_spfli TYPE spfli OCCURS 0.

 

START-OF-SELECTION.

  PERFORM f_display.

 

*&---------------------------------------------------------------------*

*&      Form  f_getdata

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->PT_SPFLI   text

*----------------------------------------------------------------------*

FORM f_getdata TABLES pt_spfli TYPE ty_tab_spfli.

  SELECT * FROM spfli INTO TABLE pt_spfli.

ENDFORM.                    "f_getdata

 

*&---------------------------------------------------------------------*

*&      Form  f_display

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM f_display.

 

  DATA: lt_spfli TYPE ty_tab_spfli,

        lt_filter TYPE slis_t_filter_alv,

        lt_sort  TYPE slis_t_sortinfo_alv,

        lt_fieldcat TYPE slis_t_fieldcat_alv.

 

  PERFORM f_getdata TABLES lt_spfli.

 

  PERFORM f_filter_build TABLES lt_filter.

 

  PERFORM f_sort_build TABLES lt_sort.

 

  PERFORM f_fieldcat CHANGING lt_fieldcat.

 

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program = sy-repid

      it_fieldcat        = lt_fieldcat

      it_filter          = lt_filter

      it_sort            = lt_sort

    TABLES

      t_outtab           = lt_spfli.

ENDFORM.                    "f_display

 

 

*&---------------------------------------------------------------------*

*&      Form  f_fieldcat

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->PT_FIELDCAT  text

*----------------------------------------------------------------------*

FORM f_fieldcat CHANGING pt_fieldcat TYPE slis_t_fieldcat_alv.

 

  FIELD-SYMBOLS <fs_fieldcat> LIKE LINE OF pt_fieldcat.

 

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

    EXPORTING

      i_structure_name       = 'SPFLI'

    CHANGING

      ct_fieldcat            = pt_fieldcat

    EXCEPTIONS

      inconsistent_interface = 1

      program_error          = 2

      other                  = 3.

 

  LOOP AT pt_fieldcat ASSIGNING <fs_fieldcat> WHERE fieldname = 'DISTANCE'.

    <fs_fieldcat>-do_sum = 'X'.

  ENDLOOP.

ENDFORM.                    "f_fieldcat

 

*&---------------------------------------------------------------------*

*&      Form  f_filter_build

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->PT_FILTER  text

*----------------------------------------------------------------------*

FORM f_filter_build TABLES pt_filter TYPE slis_t_filter_alv.

  DATA lwa_filter LIKE LINE OF pt_filter.

 

  lwa_filter-fieldname = 'DISTANCE'.

  lwa_filter-sign0 = 'E'.

  lwa_filter-optio = 'EQ'.

  lwa_filter-valut = 'MI '.

  APPEND lwa_filter TO pt_filter.

ENDFORM.                    "f_filter_build

 

 

 

*&---------------------------------------------------------------------*

*&      Form  f_sort_build

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->PT_SORT    text

*----------------------------------------------------------------------*

FORM f_sort_build TABLES pt_sort TYPE slis_t_sortinfo_alv.

 

  DATA lwa_sort LIKE LINE OF pt_sort.

 

  lwa_sort-fieldname = 'CARRID'.

  lwa_sort-up = 'X'.

  lwa_sort-subtot = 'X'.

  APPEND lwa_sort TO pt_sort.

ENDFORM.                    "f_sort_build

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章