方法1,也是大家常見的方法通過函式 REUSE_ALV_GRID_DISPLAY
<style></style>TYPES: BEGIN OF ty_spfli, "定義結構
carrid like spfli-carrid,
connid like spfli-connid,
END OF ty_spfli.
DATA: it_spfli TYPE STANDARD TABLE OF ty_spfli. "定義內表
DATA:
wa_fieldcat TYPE slis_fieldcat_alv , " 相當于作業區
i_fieldcat TYPE slis_t_fieldcat_alv , " 存放輸出欄位名稱的串列
i_layout TYPE slis_layout_alv . " 負責整個ALV的全域屬性
SELECT carrid connid INTO TABLE it_spfli "獲取內表資料
FROM spfli
UP TO 10 ROWS.
PERFORM getdata.
PERFORM islayout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' "呼叫函式
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IS_LAYOUT = i_layout
IT_FIELDCAT = i_fieldcat[]
I_SAVE = 'X'
TABLES
t_outtab = it_spfli
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
FORM getdata.
wa_fieldcat-fieldname = 'CARRID'. " 需要輸出的內表的欄位名
wa_fieldcat-seltext_l = '航班號'. " 欄位的描述-長欄位標簽
wa_fieldcat-seltext_m = '航班號'. " 欄位描述-中欄位標簽
wa_fieldcat-seltext_s = '航班號'. " 欄位描述-短欄位標簽
wa_fieldcat-fix_column = 'X' . " 是否是固定列
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'CONNID'. " 需要輸出的內表的欄位名
wa_fieldcat-seltext_l = '航班連接號'. " 欄位的描述-長欄位標簽
wa_fieldcat-seltext_m = '航班連接號'. " 欄位描述-中欄位標簽
wa_fieldcat-seltext_s = '航班連接號'. " 欄位描述-短欄位標簽
wa_fieldcat-fix_column = 'X' . " 是否是固定列
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
ENDFORM.
FORM islayout.
i_layout-zebra = 'X' . " 使ALV界面呈現顏色交替
i_layout-colwidth_optimize = 'X' . " 自動優化列寬
i_layout-detail_initial_lines = 'X' . " 是否出現細節螢屏
ENDFORM.
方法2,也是大家常見的方法通過函式 REUSE_ALV_GRID_DISPLAY_LVC 在使用上會比第一種方法功能實作上多些
<style></style>TYPES: BEGIN OF ty_spfli, "定義結構
carrid like spfli-carrid,
connid like spfli-connid,
END OF ty_spfli.
DATA: it_spfli TYPE STANDARD TABLE OF ty_spfli. "定義內表
DATA:
wa_fieldcat TYPE lvc_s_fcat , " 相當于作業區
i_fieldcat TYPE lvc_t_fcat , " 存放輸出欄位名稱的串列
i_layout TYPE lvc_s_layo . " 負責整個ALV的全域屬性
SELECT carrid connid INTO TABLE it_spfli "獲取內表資料
FROM spfli
UP TO 10 ROWS.
PERFORM getdata.
PERFORM islayout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IS_LAYOUT_LVC = i_layout
IT_FIELDCAT_LVC = i_fieldcat[]
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
t_outtab = it_spfli
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
FORM getdata.
wa_fieldcat-fieldname = 'CARRID'. " 需要輸出的內表的欄位名
wa_fieldcat-scrtext_l = '航班號'. " 欄位的描述-長欄位標簽
wa_fieldcat-scrtext_m ='航班號'.
wa_fieldcat-scrtext_s
