OO實現ALV TABLE 一:最簡單的ALV顯示

以前都是通過函數“REUSE_ALV_GRID_DISPLAY”來顯示列表,這種方式是面向過程的,現在有另外一種面向對象化的方式來顯示列表,函數REUSE_ALV_GRID_DISPLAY可以做到的它也能夠做到。它主要是通過一個類CL_SALV_TABLE來實現的.

 

下面讓我們來實現最簡單的ALV列表。

 

1取得要顯示的數據。

SELECT * INTO TABLE lt_tab FROM spfli

 

2.調用類CL_SALV_TABLE的靜態方法Factory()創建類的實例。

TRY.

        cl_salv_table=>factory(

          IMPORTING

            r_salv_table = lr_table

          CHANGING

            t_table      = lt_tab

        ).

      CATCH cx_salv_msg.

    ENDTRY.

 

3.取得實例之後再調用方法Display()顯示列表.

       lr_table->display( ).

 

處理過程完成,最後讓我們看一下顯示結果。

 

 

 

面是報表的所有源代碼:

REPORT  y_xin_002.

 

*變量定義

TYPES ty_spfli TYPE spfli OCCURS 0.

 

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

*       CLASS lcl_alv DEFINITION

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

*       ALV操作類定義

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

CLASS lcl_alv DEFINITION.

  PUBLIC SECTION.

    METHODS: getdata         "取得要顯示的數據

               RETURNING value(lt_tab) TYPE ty_spfli,

             alv_process     "ALV處理方法

               IMPORTING value(lt_tab) TYPE ty_spfli,

             main.           "主方法

  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 TABLE lt_tab FROM spfli.

  ENDMETHOD.                    "getdata

 

*ALV處理方法

  METHOD alv_process.

    "創建實例

    TRY.

        cl_salv_table=>factory(

          IMPORTING

            r_salv_table = gr_table

          CHANGING

            t_table      = lt_tab

        ).

      CATCH cx_salv_msg.

    ENDTRY.

    "顯示列表

    gr_table->display( ).

  ENDMETHOD.                    "alv_process

 

*主方法整合數據

  METHOD main.

    DATA: lt_tab TYPE TABLE OF spfli.

 

    "取得要顯示的數據

    lt_tab = me->getdata( ).

    "處理數據

    me->alv_process( 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( ).

 

關於ALV的最全文檔可以參考SAP Help

http://help.sap.com/saphelp_nw70/helpdata/EN/5e/88d440e14f8431e10000000a1550b0/content.htm

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