一 .什麼是ALV
SAP提供一套ALV(Application List viewer.)的功能模組,可以對輸出報表的樣式作修飾,提高報表輸出的可讀性和功能性,對於動態報表程式是一個很有效率的工具。一般的ALV報表有一個表頭,再加上表內容,並附加一些如排序,分類匯總,合計或下載為本地檔案等預設功能。ALV報表顯示方式基本上有2種,一種是Grid方式,一種是List方式,分別調用不同的Function來實現。
二.ALV式樣
1. REUSE_ALV_GRID_DISPLAY
2. REUSE_ALV_LIST_DISPLAY
3.ALV工具列
三.ALV函數的調用
當完成從資料庫抽取資料或上傳資料,並將資料存放到內部表(IT_ABC)後,開始調用下面的ALV函數模組。
1.指定資料類型組
TYPE-POOLS: SLIS.
DATA:
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "ALV輸出項目編輯用
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "ALV輸出項目編輯用
WA_LAYOUT TYPE SLIS_LAYOUT_ALV. "ALV樣式設定用
2.調出函數模組
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = IT_TAB.
......
3. 函數的各項說明
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 已經存在SAP系統中的結構
IS_LAYOUT = 布局
IT_FIELDCAT = 自訂
IT_SORT = 對項目的一個排序
IT_EVENTS = 標題部分
......
四.使用ALV的注意事項
1.在ALV中,需要注意所有添加的需要顯示的列,都必須在相應的內表中有對應的欄位,否則,只要使用合計或者分類匯總都會導致程式的崩潰。
2.在SAP ABAP程式中,字串的大小寫很重要,在單引號包圍的字串中,一般來說都應該用大寫,特別是在調用一些系統的方法時傳入字串參數時,例如在ALV中,
Call Function ‘REUSE_ALV_GRID_DISPLAY’時,
傳入的下面的兩個參數:
i_callback_pf_status_set = ‘SET_PF_STATUS’
i_callback_user_command = ‘USER_COMMAND’
就必須使用大寫字串,否則就會出現Perform_not_found的系統錯誤。
3.另外,傳入到ALV中的列對應的欄位名稱也必須使用大寫字母,否則資料不會顯示出來。
五.相關參數說明
1.構造SLIS_FIELDCAT_ALV常用參數說明
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = ‘MTART‘. “指定從內表中的輸出的資料項目
WA_FIELDCAT-SELTEXT_L = ‘品目タイプ‘. “上面指定項目顯示時的名稱(長文本)
WA_FIELDCAT-SELTEXT_M = ‘品目タイプ‘. “上面指定項目顯示時的名稱(中文本)
WA_FIELDCAT-SELTEXT_S = ‘品目タイプ‘. “上面指定項目顯示時的名稱(短文本)
WA_FIELDCAT-REPTEXT_DDIC = ‘品目タイプ‘. “上面指定項目顯示時的名稱(定義文本)
WA_FIELDCAT-OUTPUTLEN = 15. “列的顯示寬度
WA_FIELDCAT-HOTSPOT = ‘X’. “設定熱點狀態
......
APPEND WA_FIELDCAT TO IT_FIELDCAT.
注意:有多少個項目列要顯示就要這樣向內部表IT_FIELDCAT中追加記錄多少次。
2.構造SLIS_LAYOUT_ALV常用參數說明
LAYOUT-ZEBRA = ‘X’. “斑馬線樣式
LAYOUT-COLWIDTH_OPTIMIZE = 'X'. “列寬度自動根據內容最佳化
LAYOUT-NO_COLHEAD = ‘X’. “列名稱不顯示
LAYOUT-NO_VLINE = ‘X’. “不表示區分用的垂直線
LAYOUT-EDIT = ‘X’. “列值可編輯,只用於GRID
LAYOUT-WINDOW_TITLEBAR = ‘ALV表單的標題’. “一行
......
六.通常調用所使用參數
CALL FUNCTION'REUSE_ALV_LIST_DISPLAY'
EXPORTING
IT_FIELDCAT = IT_FIELDCAT "輸出項目列文本資訊(表頭)
IS_LAYOUT = L_LAYOUT "輸出資料行表樣式資訊
TABLES
T_OUTTAB = IT_ALVOUT "輸出的資料資訊(明細)
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
另一種簡便的方法:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'TY_OUT_FILE' "輸出項目列文本資訊(表頭)
IS_LAYOUT = L_LAYOUT "輸出資料行表樣式資訊
TABLES
T_OUTTAB = TAB_OUT_FILE "輸出的資料資訊(明細)
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
註:TY_OUT_FILE構造必須是資料字典中已經存在的對象。
輸出項目繁多時,建議先在資料字典系統中建立構造,然後使用後一種調用方法,這樣可免去對輸出資料行表頭資訊的繁瑣編輯處理,使程式碼也縮短。