在ALV開發中有兩個重要的對象:LAYOUT和FIELDCAT。LAYOUT主要用于設定ALV的輸出格式,如輸出字段的顔色、表格中的線條等;而FIELDCAT主要用于ALV結構定義,包括具體字段的名稱、類型、格式等屬性,它們同屬于類型池SLIS,在ALV開發中必須導入類型池SLIS。
[For Example]
*ALV使用到的類型池
TYPE-POOLS:SLIS.
DATA wa_alv_field TYPE SLIS_FIELDCAT_ALV.
*清單字段 (綁定FIELD)無HEADLER LINE
DATA wa_alv_fieldcat TYPE SLIS_T_FIELDCAT_ALV.
*DATA wa_alv_fieldcat TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE. "有HEADLINE LINE定義的FIELDCAT
*定義資料內表
DATA wa_spfli LIKE TABLE OF SPFLI WITH HEADER LINE.
*內表賦值
SELECT * INTO TABLE wa_spfli FROM SPFLI.
*定義四FIELDCAT資訊
wa_alv_field-COL_POS = 1. *ALV列索引
wa_alv_field-FIELDNAME = 'CARRID'.*ALV綁定字段
wa_alv_field-SELTEXT_M = '航班承運人'.*ALV表頭顯示的文字
APPEND wa_alv_field TO wa_alv_fieldcat.*內表賦值,無HEADER LINE隻能APPEND...TO...
*有HEADER LINE 的FIELDCAT可以直接用對象指派給對象
*wa_alv_fieldcat-COL_POS = 1.
*wa_alv_fieldcat-FIELDNAME = 'CARRID'.
*wa_alv_fieldcat-SELTEXT_M = '航班承運人'.
*APPEND wa_alv_fieldcat.
wa_alv_field-COL_POS = 2.
wa_alv_field-FIELDNAME = 'CONNID'.
wa_alv_field-SELTEXT_M = '航班數量'.
APPEND wa_alv_field TO wa_alv_fieldcat.
wa_alv_field-COL_POS = 3.
wa_alv_field-FIELDNAME = 'CITYFROM'.
wa_alv_field-SELTEXT_M = '起飛城市'.
wa_alv_field-COL_POS = 4.
wa_alv_field-FIELDNAME = 'CITYTO'.
wa_alv_field-SELTEXT_M = '目標城市'.
wa_alv_field-COL_POS = 5.
wa_alv_field-FIELDNAME = 'AIRPFROM'.
wa_alv_field-SELTEXT_M = '部門機場'.
wa_alv_field-COL_POS = 6.
wa_alv_field-FIELDNAME = 'AIRPTO'.
wa_alv_field-SELTEXT_M = '目地機場'.
*調用ALV顯示表單
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' "'REUSE_ALV_LIST_DISPLAY' 樣式風格有點迥異
EXPORTING
IT_FIELDCAT = wa_alv_fieldcat *設定ALV顯示風格 對于無HEADER LINE 也可以用wa_alv_fieldcat[],然而有HEADER LINE的隻能用後者,否則程式将報錯,有無HEADER LINE的FIELDCAT加上[]取回的都是表身吧。
TABLES
T_OUTTAB = wa_spfli.
程式運作界面如下: