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報表基本上就沒什么難
點了。
總結
以上是生活随笔為你收集整理的ABAP--如何在选择屏幕上输出ALV GRID报表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABAP屏幕基础
- 下一篇: abap 选择屏幕事件AT SELECT