ALV類應用-GRID

ttn133發表於2008-07-07
定義類來顯示ALV的步驟[@more@]

ALV的應用,除了直接呼叫函式以外,另一種發發就是利用類,具體步驟如下:

一。建立容器。
這就需要為程式新增Dynpro畫面,並在螢幕中建立容器,用來顯示ALV。例如容器控制元件名稱為‘CUST_01’。


ALV的應用,除了直接呼叫函式以外,另一種發發就是利用類,具體步驟如下:

一。建立容器。
這就需要為程式新增Dynpro畫面,並在螢幕中建立容器,用來顯示ALV。例如容器控制元件名稱為‘CUST_01’。

二。定義類。
*類定義
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
* 方法(雙擊事件)
METHODS: handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
*類宣告
CLASS lcl_event_receiver IMPLEMENTATION.
* 方法(雙擊事件)
METHOD handle_double_click.
* 方法(雙擊事件)實現
PERFORM screen_call_order USING e_row-index.
ENDMETHOD. "handle_double_click

三。定義物件及相關變數。
* ALV輸出用
DATA:
* 輸出
rec_layout TYPE lvc_s_layo,
* ALV用標準類
grid1 TYPE REF TO cl_gui_alv_grid,
event_receiver TYPE REF TO lcl_event_receiver,
* CFW用標準類
custom_container1 TYPE REF TO cl_gui_custom_container,
* variant
rec_variant TYPE disvariant,
* fieldcatalog
rec_fieldcatalog TYPE lvc_s_fcat,
tab_fieldcatalog TYPE TABLE OF lvc_s_fcat.
上面是一些ALV輸出用的基本定義,下面是建立物件:
* 容器控制元件建立
CREATE OBJECT custom_container1
" CL_GUI_CUSTOM_CONTAINER
EXPORTING
container_name = ‘CUST_01’
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.

* ALV物件建立
CREATE OBJECT grid1 " CL_GUI_ALV_GRID
EXPORTING i_parent = custom_container1
i_appl_events = 'X'.
以上的CREAT是在第一步的DYNPRO的PBO裡面做的。

四。設定以及呼叫方法。
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = XXX " 列構造(需要自己宣告定義)
is_layout = rec_layout " ALV Layout構造
i_save = 'A'
is_variant = rec_variant
it_toolbar_excluding = tab_toolbar
CHANGING
it_outtab = tab_alv[] " 列資料
it_fieldcatalog = tab_fieldcatalog[].
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GRID1.
CALL METHOD GRID1->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 1.
ENDIF.
上面的tab_toolbar是有關機能碼的內部表,定義如下:
DATA:tab_toolbar TYPE ui_functions. "機能碼
此方法呼叫仍然是在PBO裡面完成的。

還有其他方法的呼叫:

CALL METHOD grid1->refresh_table_display.
重新整理畫面用,支援針對USER-COMMAND的操作,當你對ALV輸出做了變動的時候,可呼叫此方法對畫面進行更新輸出。

CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = l_lvc_t_row.
取得被選擇行的行資訊,你可在此基礎上進行明細檢視以及其他的具體操作等。

以上只是簡單的介紹了一下,要想充分掌握理解,最好自己實踐一下。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/238575/viewspace-1006913/,如需轉載,請註明出處,否則將追究法律責任。

相關文章