OO實現ALV TABLE 四:ALV的顯示樣式

 

通過類CL_SALV_DISPLAY_SETTINGS我們可以設置ALV的顯示樣式,主要包括ALV表頭名稱,列表顏色間隔顯示,水平線是否顯示,豎線是否顯示等。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

1.首先我們要取得類CL_SALV_DISPLAY_SETTINGS的實例,根據類CL_SALV_TABLE的方法get_display_settings可以取得顯示樣式的實例。

lr_display = gr_table->get_display_settings( ).

2然後通過類CL_SALV_DISPLAY_SETTINGS的方法設置顯示屬性

lr_display = gr_table->get_display_settings( ).

    lr_display->set_striped_pattern( 'X' ). "設置顏色間隔顯示

    lr_display->set_list_header( 'Xin''s ALV' ). "設置ALV的擡頭

    lr_display->set_horizontal_lines( '' ).  "設置水平線是否顯示

    lr_display->set_vertical_lines( '' ).    "設置垂直線是否顯示

 

下面是效果圖

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

 

 

下面是程序的所有代碼:

REPORT  y_xin_002.

 

*變量定義

TYPES ty_spfli TYPE spfli OCCURS 0.

DATA: gr_table     TYPE REF TO cl_salv_table.

 

 

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

*       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,

             main.           "主方法

ENDCLASS.                    "lcl_alv DEFINITION

 

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

*       CLASS lcl_alv IMPLEMENTATION

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

*       ALV操作類(實現)

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

CLASS lcl_alv IMPLEMENTATION.

*取得要顯示的數據

  METHOD getdata.

    SELECT * INTO TABLE lt_tab FROM spfli.

  ENDMETHOD.                    "getdata

 

*輸出全屏網格列表的方法

  METHOD alv_full.

    DATA: lr_functions TYPE REF TO cl_salv_functions,

          lr_display   TYPE REF TO cl_salv_display_settings.

    data boolean type c.

 

    "創建實例

    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' ).

 

    "設置ALV的顯示樣式

    lr_display = gr_table->get_display_settings( ).

    lr_display->set_striped_pattern( 'X' ). "設置顏色間隔顯示

    lr_display->set_list_header( 'Xin''s ALV' ). "設置ALV的擡頭

    lr_display->set_horizontal_lines( '' ).  "設置水平線是否顯示

    lr_display->set_vertical_lines( '' ).    "設置垂直線是否顯示

 

    "顯示列表

    gr_table->display( ).

  ENDMETHOD.                    "alv_full

 

*主方法整合數據

  METHOD main.

    DATA: lt_tab TYPE TABLE OF spfli.

 

    "取得要顯示的數據

    lt_tab = me->getdata( ).

 

    me->alv_full( lt_tab ).

  ENDMETHOD.                    "main

ENDCLASS.                    "lcl_alv IMPLEMENTATION

 

*報表執行

START-OF-SELECTION.

  DATA  lr_alv   TYPE REF TO lcl_alv.

  CREATE OBJECT lr_alv.

  lr_alv->main( ).

發佈了30 篇原創文章 · 獲贊 1 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章