ALV - Total e Subtotal
ALV - Total e Subtotal
ALV - Total e Subtotal
TYPES : BEGIN OF tab,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
text1(20), ” FOR TOTAL TEXT
text2(20), ” FOR SUBTOTAL TEXT
END OF tab.
DATA : it_flight TYPE TABLE OF tab,
wa_flight TYPE tab,
it_fcat TYPE lvc_t_fcat,
wa_fcat TYPE lvc_s_fcat,
wa_layo TYPE lvc_s_layo,
it_sort TYPE lvc_t_sort,
wa_sort TYPE lvc_s_sort,
o_cust TYPE REF TO cl_gui_custom_container,
o_alv TYPE REF TO cl_gui_alv_grid,
ok_code TYPE sy-ucomm.
START-OF-SELECTION.
PERFORM fetch_data.
PERFORM build_text.
PERFORM build_fieldcat.
PERFORM build_layout.
PERFORM build_sort.
END-OF-SELECTION.
CALL SCREEN 100.
*———————————————————————-*
FORM fetch_data .
SELECT carrid
connid
fldate price FROM sflight INTO CORRESPONDING FIELDS OF TABLE it_flight.
SORT it_flight BY carrid ASCENDING.
ENDFORM. ” FETCH_DATA
*———————————————————————-*
FORM build_text .
DATA : carr TYPE sflight-carrid,
txt TYPE char20.
LOOP AT it_flight INTO wa_flight.
wa_flight-text1 = ‘Total Price = ‘.
IF wa_flight-carrid NE carr.
carr = wa_flight-carrid.
CONCATENATE ‘Subtotal (‘ carr ‘) =’ INTO txt SEPARATED BY space.
ENDIF.
wa_flight-text2 = txt.
MODIFY it_flight FROM wa_flight.
ENDLOOP.
ENDFORM. ” BUILD_TEXT
*———————————————————————-*
FORM build_fieldcat .
wa_fcat-col_pos = 1.
wa_fcat-fieldname = ‘TEXT1’.
wa_fcat-tech = ‘X’.
wa_fcat-no_out = ‘X’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 2.
wa_fcat-fieldname = ‘TEXT2’.
wa_fcat-tech = ‘X’.
wa_fcat-no_out = ‘X’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 3.
wa_fcat-fieldname = ‘CARRID’.
wa_fcat-tabname = ‘IT_FLIGHT’.
wa_fcat-scrtext_m = ‘CARRID’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 4.
wa_fcat-fieldname = ‘CONNID’.
wa_fcat-tabname = ‘IT_FLIGHT’.
wa_fcat-scrtext_m = ‘CONNID’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 5.
wa_fcat-fieldname = ‘FLDATE’.
wa_fcat-tabname = ‘IT_FLIGHT’.
wa_fcat-scrtext_m = ‘FLIGHT DATE’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 6.
wa_fcat-fieldname = ‘PRICE’.
wa_fcat-tabname = ‘IT_FLIGHT’.
wa_fcat-scrtext_m = ‘PRICE’.
wa_fcat-do_sum = ‘X’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ENDFORM. ” BUILD_FIELDCAT
*————————————————————*
FORM build_layout .
wa_layo-cwidth_opt = ‘X’.
wa_layo-zebra = ‘X’.
wa_layo-no_totline = ‘X’.
ENDFORM. ” BUILD_LAYOUT
*————————————————————-*
FORM build_sort .
wa_sort-spos = 1.
wa_sort-fieldname = ‘TEXT1’.
wa_sort-up = ‘X’.
wa_sort-subtot = ‘X’.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
wa_sort-spos = 2.
wa_sort-fieldname = ‘TEXT2’.
wa_sort-up = ‘X’.
wa_sort-subtot = ‘X’.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
ENDFORM. ” BUILD_SORT
*————————————————————-*
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘STATUS’.
ENDMODULE. ” STATUS_0100 OUTPUT
*————————————————————*
MODULE display_alv_grid OUTPUT.
IF o_cust IS NOT BOUND.
CREATE OBJECT o_cust
EXPORTING
it_sort = it_sort.
ENDMODULE. ” DISPLAY_ALV_GRID OUTPUT
*———————————————————–*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘BACK’.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. ” USER_COMMAND_0100 INPUT
*————————————————————*
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE display_alv_grid.
PROCESS AFTER INPUT.
MODULE user_command_0100.