OO实现ALV TABLE 一:最简单的ALV显示
以前都是通過函數(shù)“REUSE_ALV_GRID_DISPLAY”來顯示列表,這種方式是面向過程的,現(xiàn)在有另外一種面向對象化的方式來顯示列表,函數(shù)REUSE_ALV_GRID_DISPLAY可以做到的它也能夠做到。它主要是通過一個類CL_SALV_TABLE來實現(xiàn)的.
?
下面讓我們來實現(xiàn)最簡單的ALV列表。
?
1取得要顯示的數(shù)據(jù)。
SELECT * INTO TABLE lt_tab FROM spfli up to 100 rows.
?
2.調(diào)用類CL_SALV_TABLE的靜態(tài)方法Factory()創(chuàng)建類的實例。(Neu erzeugte Instanz für ALV-Tabellenobjekt holen)
TRY.
??????? cl_salv_table=>factory(
????????? IMPORTING
??????????? r_salv_table = lr_table
????????? CHANGING
??????????? t_table????? = lt_tab
??????? ).
????? CATCH cx_salv_msg.
??? ENDTRY.
?
3.取得實例之后再調(diào)用方法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???????? "取得要顯示的數(shù)據(jù)
?????????????? 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操作類(實現(xiàn))
*----------------------------------------------------------------------*
CLASS lcl_alv IMPLEMENTATION.
*取得要顯示的數(shù)據(jù)
? METHOD getdata.
??? SELECT * INTO TABLE lt_tab FROM spfli.
? ENDMETHOD.??????????????????? "getdata
?
*ALV處理方法
? METHOD alv_process.
??? "創(chuàng)建實例
??? 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
?
*主方法,整合數(shù)據(jù)
? METHOD main.
??? DATA: lt_tab TYPE TABLE OF spfli.
?
??? "取得要顯示的數(shù)據(jù)
??? lt_tab = me->getdata( ).
??? "處理數(shù)據(jù)
??? me->alv_process( lt_tab ).
? ENDMETHOD.??????????????????? "main
ENDCLASS.??????????????????? "lcl_alv IMPLEMENTATION
?
*報表執(zhí)行
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總結
以上是生活随笔為你收集整理的OO实现ALV TABLE 一:最简单的ALV显示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OO实现ALV TABLE 二:ALV显
- 下一篇: 类CL_ABAP_TYPEDESCR,动