ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9. 10주차 과제 - SUM
    SAP/과제 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

     

     

     

Designed by Tistory.