如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2006年8月25日

SAP List Viewer(ALV) 簡介與範例程式之一

Author : Fred Wang (http://fredwang.blogspot.com)
Date : 2006/08/25

SAP List Viewer, 稱為ALV, 可以讓表格資料顯示的很好看而且還有有許多內定的功能按鈕, 如排序, 過濾, 統計, 圖表, 輸出excel, word, 下載等, SAP提供了許多function modules支援, 其中最簡單的是'DISPLAY_BASIC_LIST'.

使用的function module 'DISPLAY_BASIC_LIST', 有一個缺點: 必須用一個DO .. ENDDO迴圈, 才可以將您按某個button執行的程式, 執行完畢回到list畫面, 如此一來, 重新顯示list, 則指標每此均會指到第一筆

Example :
FORM CALL_DISPLAY_BASIC_LIST.
DATA: W_FUNC LIKE SY-SUBRC.

DO.
REFRESH GT_SELECTED.
CLEAR W_FUNC.
CALL FUNCTION 'DISPLAY_BASIC_LIST'
EXPORTING
BASIC_LIST_TITLE = SY-TITLE
FILE_NAME = 'Basic List'
HEAD_LINE1 = 'head1'
HEAD_LINE2 = 'head2'
DYN_PUSHBUTTON_TEXT1 = 'Function 1'
DYN_PUSHBUTTON_TEXT2 = 'Function 2'
DYN_PUSHBUTTON_TEXT3 = 'Function 3'
DYN_PUSHBUTTON_TEXT4 = 'Function 4'

IMPORTING
RETURN_CODE = W_FUNC
TABLES
DATA_TAB = GT_ITAB
FIELDNAME_TAB = FIELDNAMES
SELECT_TAB = GT_SELECTED
EXCEPTIONS
DOWNLOAD_PROBLEM = 1
NO_DATA_TAB_ENTRIES = 2
TABLE_MISMATCH = 3
PRINT_PROBLEMS = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ELSE.
CLEAR GT_SELECTED.
READ TABLE GT_SELECTED INDEX 1.
CASE W_FUNC.
WHEN 1. PERFORM FUNCTION1.
WHEN 2. PERFORM FUNCTION2.
WHEN 3. PERFORM FUNCTION3.
WHEN 4. PERFORM FUNCTION4.

ENDCASE.
ENDIF.

ENDDO.

因此'DISPLAY_BASIC_LIST' OR 'DISPLAY_GRID_LIST'僅適用於查詢, 不適合做進一步的資料選擇, 對選擇的資料進行處理, 除此之外也無法選擇不要顯示某些預設按鈕, 如Total等

可用function module 'REUSE_ALV_LIST_DISPLAY' OR 'REUSE_ALV_GRID_DISPLAY' 取代, 就不會有這種問題! 下回會詳細介紹如何使用這兩個function module

另外, SAP提供很好的範例程式, 直接供你複製, 我就 ALV技術的 sample programs 整理如下(七類) :
1. Simple list
- 超基本 : BALVSD02, BALVSD02_GRID, BALVSD02_SAVE 利用現有的資料結構作為欄位定義
- 基本 : BALVSD03, BALVSD04 程式中自訂欄位定義
- 完整 : BALVSD01, BALVSD11(*程式可以知道使用者選擇哪筆record), BALVST01, BALVST02, BALVEX01,BALVEX02

要注意, 這些程式最好用SE80去看, 因為有些GUI Status 為自訂的, 可從SAPLKKBL複製它的"STANDARD" GUI status到自己的程式, 再增刪需要與不需要的按鈕

2. Mini ALV List (function module使用方式與simple list看起來差不多)
- BCALV_MINIALV_SIMPLE (最簡單), BCALV_MINIALV

3.. Block List
- BALVBT01, BALVBT02

4. Hierarchical-sequential list
- BALVHD01, BALVHD01_GROUP, BALVHT01

5. ALV Grid Control (用Grid control object, 採物件導向式的設計, 注意, 按鈕並不是在GUI status上)
- BCALV_GRID_DEMO, BCALV_GRID_*

6. ALV Tree Control
- BCALV_TREE_SIMPLE_DEMO, BCALV_TREE_DEMO, BCALV_TREE_*

7. Other ALV
- BCALV_TEST_*

沒有留言:

張貼留言

歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)