ABAP--如何在選擇螢幕上輸出ALV GRID報表
希望能反覆地輸入選擇條件進行查詢。實現這個功能的辦法就是在選擇螢幕上輸出報表內容。
一般情況下,大家都是直接從SAP的系統中找到相應的例程,然後進行加工修改。不過SAP系
統的例程是面向物件的開發,不大符合我們這一群老鳥的習慣。本人仔細研究了一下這個例程,
將其更改我們常用的程式設計模式。程式碼見附件,具體說明如下:
選擇螢幕也是一個螢幕,與一般建立的螢幕不同的是:它沒有PBO、PAI事件,報表程式中的
INITIALIZATION就是選擇螢幕的PBO事件,其它事件是選擇螢幕的PAI事件。具體事件與程式功能
程式碼如下:
INITIALIZATION.
PERFORMsub_init_cond. "初始化選擇螢幕欄位
PERFORM sub_create_fieldcat.
PERFORM sub_init_layout.
PERFORMsub_create_object. "建立選擇螢幕上的物件
START-OF-SELECTION.
PERFORMsub_process_cond. "對選擇條件進行處理
PERFORM sub_query_t006a. "查詢相關資料
END-OF-SELECTION.
PERFORMsub_refresh_table. "重新整理內表裡的資料
我們在INITIALIZATION事件下建立ALV GRID輸出需要的物件。如果輸出內表 GT_RESULT[]為
空,則跳過這段程式碼;如果輸出內表 GT_RESULT[]內容不為空工,則建立ALV GRID需要的物件,
並在選擇螢幕上的BLOCK下面輸出相應的內容。
系統MEMORY ID sy-cprog 是用來儲存結果內表資料的一個全域性儲存區。如果感覺不方便,也
可以定義一個新的內表來儲存結果內表的資料。只要在IMPORT MEMORY ID時將它的內容賦給結果
內表,在EXPORT MEMORY ID時將結果內表的資料賦給這個新內表即可。
本程式還有一個重點就是如何在選擇螢幕上建立ALV所需要的物件,程式碼如下:
CREATE OBJECT go_dock
EXPORTING
repid = sy-cprog
dynnr = sy-dynnr
ratio = 85
side =cl_gui_docking_container=>dock_at_bottom
name = 'DOCK_CONT'.
然後再建立ALV所需要的CONTAINER物件。有了ALV所需要的物件,ALV報表基本上就沒什麼難
點了。