type-pools:slis.
TYPES:BEGIN OF ty_itab,
chk,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
distance TYPE spfli-distance,
END OF ty_itab.
DATA:lt_itab TYPE TABLE OF ty_itab.
DATA:ls_itab TYPE ty_itab.
DATA:nn TYPE spfli-distance.
DATA:ws_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
ws_fieldgroups_tab TYPE slis_t_sp_group_alv,
ws_layout TYPE slis_layout_alv,
ws_sortfields_tab TYPE slis_t_sortinfo_alv WITH HEADER LINE,
ws_events TYPE slis_t_event,
l_user_command TYPE slis_formname,
i_event TYPE slis_t_event..
FIELD-SYMBOLS:<fs> TYPE ty_itab.
DATA:i_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
START-OF-SELECTION.
CLEAR nn.
SELECT carrid connid distance
FROM spfli
INto CORRESPONDING FIELDS OF TABLE lt_itab.
LOOP AT lt_itab ASSIGNING <fs>.
nn = nn + <fs>-distance.
ENDLOOP.
ls_itab-carrid = '合计'.
ls_itab-distance = nn.
APPEND ls_itab to lt_itab.
CLEAR ls_itab.
DEFINE hout.
ws_fieldcat-fieldname = &1.
ws_fieldcat-seltext_m = &2.
ws_fieldcat-edit = &3.
ws_fieldcat-quantity = &4.
ws_fieldcat-ref_tabname = &5.
ws_fieldcat-ref_fieldname = &6.
ws_fieldcat-no_zero = &7.
ws_fieldcat-do_sum = &8.
if &1 = 'CHK'.
ws_fieldcat-checkbox = 'X'.
endif.
append ws_fieldcat.
clear ws_fieldcat.
END-OF-DEFINITION.
hout:
'CARRID' '航班' '' '' '' '' '' '' ,
'CONNID' '航线' '' '' '' '' '' '' ,
'DISTANCE' '距离' '' '' '' '' '' '' .
ws_layout-zebra = 'X'.
ws_layout-get_selinfos = 'X'.
ws_layout-colwidth_optimize = 'X'.
ws_layout-detail_popup = 'X'.
ws_layout-box_fieldname = 'CHK'.
DATA:g_reid like sy-repid.
g_reid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_reid
* i_callback_top_of_page = 'SUB_ALV_TOP_OF_PAGE'
is_layout = ws_layout
it_fieldcat = ws_fieldcat[]
* it_events = i_event
* I_CALLBACK_USER_COMMAND = L_USER_COMMAND
* I_CALLBACK_PF_STATUS_SET = 'FRM_SET_STATUS'
* IT_SPECIAL_GROUPS = WS_FIELDGROUPS_TAB[]
it_sort = i_sort
* I_GRID_SETTINGS = GS_SETTINGS
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = lt_itab
EXCEPTIONS
program_error = 1
OTHERS = 2.
TYPES:BEGIN OF ty_itab,
chk,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
distance TYPE spfli-distance,
END OF ty_itab.
DATA:lt_itab TYPE TABLE OF ty_itab.
DATA:ls_itab TYPE ty_itab.
DATA:nn TYPE spfli-distance.
DATA:ws_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
ws_fieldgroups_tab TYPE slis_t_sp_group_alv,
ws_layout TYPE slis_layout_alv,
ws_sortfields_tab TYPE slis_t_sortinfo_alv WITH HEADER LINE,
ws_events TYPE slis_t_event,
l_user_command TYPE slis_formname,
i_event TYPE slis_t_event..
FIELD-SYMBOLS:<fs> TYPE ty_itab.
DATA:i_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
START-OF-SELECTION.
CLEAR nn.
SELECT carrid connid distance
FROM spfli
INto CORRESPONDING FIELDS OF TABLE lt_itab.
LOOP AT lt_itab ASSIGNING <fs>.
nn = nn + <fs>-distance.
ENDLOOP.
ls_itab-carrid = '合计'.
ls_itab-distance = nn.
APPEND ls_itab to lt_itab.
CLEAR ls_itab.
DEFINE hout.
ws_fieldcat-fieldname = &1.
ws_fieldcat-seltext_m = &2.
ws_fieldcat-edit = &3.
ws_fieldcat-quantity = &4.
ws_fieldcat-ref_tabname = &5.
ws_fieldcat-ref_fieldname = &6.
ws_fieldcat-no_zero = &7.
ws_fieldcat-do_sum = &8.
if &1 = 'CHK'.
ws_fieldcat-checkbox = 'X'.
endif.
append ws_fieldcat.
clear ws_fieldcat.
END-OF-DEFINITION.
hout:
'CARRID' '航班' '' '' '' '' '' '' ,
'CONNID' '航线' '' '' '' '' '' '' ,
'DISTANCE' '距离' '' '' '' '' '' '' .
ws_layout-zebra = 'X'.
ws_layout-get_selinfos = 'X'.
ws_layout-colwidth_optimize = 'X'.
ws_layout-detail_popup = 'X'.
ws_layout-box_fieldname = 'CHK'.
DATA:g_reid like sy-repid.
g_reid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_reid
* i_callback_top_of_page = 'SUB_ALV_TOP_OF_PAGE'
is_layout = ws_layout
it_fieldcat = ws_fieldcat[]
* it_events = i_event
* I_CALLBACK_USER_COMMAND = L_USER_COMMAND
* I_CALLBACK_PF_STATUS_SET = 'FRM_SET_STATUS'
* IT_SPECIAL_GROUPS = WS_FIELDGROUPS_TAB[]
it_sort = i_sort
* I_GRID_SETTINGS = GS_SETTINGS
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = lt_itab
EXCEPTIONS
program_error = 1
OTHERS = 2.