-
9. 10주차 과제 - SUMSAP/과제 2025. 8. 19. 16:13
과제내용
- sflight 테이블의 데이터를 집계하여 출력하기.
- 집계 조건 : carrid기준, connid 기준
입력화면 필드
- CARRID
출력화면 추가 필드- CARRID
- CONNID
- PRICE
- CURRENCY
- SEATSMAX
- SEATSOCC
결과 화면
1. carrid 기준 SUM
2. connid 기준 SUM
* 소스코드
*&---------------------------------------------------------------------*
*& Report Z10WEEK_REP
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z10WEEK_REP.
TABLES: sflight.
TYPE-POOLS: slis. "ALV Declarations
*Data Declaration
*----------------
TYPES: BEGIN OF t_sflight,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
price TYPE sflight-price,
currency TYPE sflight-currency,
seatsmax TYPE sflight-seatsmax,
seatsocc TYPE sflight-seatsocc,
END OF t_sflight.
DATA: it_sflight TYPE STANDARD TABLE OF t_sflight INITIAL SIZE 0,
wa_sflight TYPE t_sflight.
DATA: it_collect TYPE STANDARD TABLE OF t_sflight INITIAL SIZE 0,
wa_collect TYPE t_sflight.
DATA: it_collect2 TYPE STANDARD TABLE OF t_sflight INITIAL SIZE 0,
wa_collect2 TYPE t_sflight.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.
*Sort options
DATA: gt_sort TYPE slis_t_sortinfo_alv.
DATA: wa_sort TYPE slis_sortinfo_alv.
DATA : t TYPE slis_t_sp_group_alv .
************************************************************************
*Start-of-selection.
SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_carrid FOR sflight-carrid.
SELECTION-SCREEN END OF BLOCK part1.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv_report.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'CARRID'.
fieldcatalog-seltext_m = 'Airline Code'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'CONNID'.
fieldcatalog-seltext_m = 'Flight Connection Number'.
fieldcatalog-col_pos = 1.
fieldcatalog-lzero = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PRICE'.
fieldcatalog-seltext_m = 'Airfare'.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'CURRENCY'.
fieldcatalog-seltext_m = 'Local currency of airline'.
fieldcatalog-col_pos = 3.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'SEATSMAX'.
fieldcatalog-seltext_m = 'Maximum capacity in economy class'.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'SEATSOCC'.
fieldcatalog-seltext_m = 'Occupied seats in economy class'.
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-zebra = 'X'.
* gd_layout-info_fieldname = 'LINE_COLOR'.
* gd_layout-def_status = 'A'.
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
* Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_sort = gt_sort[]
i_save = 'X'
TABLES
t_outtab = it_collect
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval.
SELECT CARRID CONNID PRICE CURRENCY SEATSMAX SEATSOCC
FROM sflight
INTO TABLE it_sflight
WHERE carrid in s_carrid.
LOOP AT it_sflight INTO wa_sflight.
AT END OF carrid.
SUM.
APPEND wa_sflight TO it_collect.
ENDAT.
AT END OF connid.
SUM.
APPEND wa_sflight TO it_collect2.
ENDAT.
ENDLOOP.
ENDFORM. " DATA_RETRIEVAL'SAP > 과제' 카테고리의 다른 글
10. 11주차 과제 - 테이블 생성 (0) 2025.08.19 8. 9주차 과제 - COLLECT (0) 2025.08.01 7. 8주차 과제 - 항공사 예약 조회 프로그램 #2 (0) 2025.07.21 6. 7주차 과제 - 항공사 예약 조회 프로그램 (0) 2025.07.10 5. 6주차 과제 - 검색 화면 구현 (0) 2025.07.02