ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5. 6주차 과제 - 검색 화면 구현
    SAP/과제 2025. 7. 2. 17:12

     

     

     

    과제내용

    - 테이블 SPFLI를 이용하여 검색화면 구현하기

    검색화면의 셀렉트옵션 필드
    - CARRID, CONNID, CITYFROM, CITYTO
    - NUM TYPE I  파라미터로 개수 제한하기

    출력화면 필드
    - CARRID, CONNID, CITYFROM, CITYTO, DEPTIME, ARRTIME

     


    결과 화면

     

     

    * 소스코드

    *&---------------------------------------------------------------------*
    *& Report Z5WEEK_REP
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT Z5WEEK_REP.

    TABLES:    spfli.

    TYPE-POOLS: slis.                                 "ALV Declarations

    *Data Declaration
    *----------------
    TYPES: BEGIN OF t_spfli,
      carrid   TYPE spfli-carrid,
      connid   TYPE spfli-connid,
      cityfrom TYPE spfli-cityfrom,
      cityto TYPE spfli-cityto,
      deptime      TYPE spfli-deptime,
      arrtime      TYPE spfli-arrtime,
     END OF t_spfli.

    DATA: it_spfli TYPE STANDARD TABLE OF t_spfli ,
          wa_spfli TYPE t_spfli.

    *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.

    DATA : t TYPE slis_t_sp_group_alv .

    SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS s_carrid FOR spfli-carrid.     " 데이터 조회 조건 값 입력받는다.
    SELECTION-SCREEN SKIP.           " 필드 사이의 공간 띄우기
    SELECT-OPTIONS s_connid FOR spfli-connid.
    SELECT-OPTIONS s_cfrom FOR spfli-cityfrom.
    SELECT-OPTIONS s_cto FOR spfli-cityto.
    SELECTION-SCREEN SKIP.
    PARAMETERS NUM TYPE I DEFAULT 10.     " SELECT 문에서 데이터 출력 개수를 입력받는다.
    SELECTION-SCREEN END OF BLOCK part1.

    ************************************************************************
    *Start-of-selection.
    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.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'CITYFROM'.
      fieldcatalog-seltext_m   = 'Departure city'.
      fieldcatalog-col_pos     = 2.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'CITYTO'.
      fieldcatalog-seltext_l   = 'Arrival city'.
      fieldcatalog-col_pos     = 3.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'DEPTIME'.
      fieldcatalog-seltext_m   = 'Departure time'.
      fieldcatalog-col_pos     = 4.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'ARRTIME'.
      fieldcatalog-seltext_m   = 'Arrival time'.
      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[]
          i_save             = 'X'
        TABLES
          t_outtab           = it_spfli
        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.
      DATA: ld_color(1) TYPE c.

      SELECT CARRID CONNID CITYFROM CITYTO DEPTIME ARRTIME
       UP TO NUM ROWS    " selection screen에서 입력 받은 데이터 사용.
        FROM spfli
        INTO TABLE it_spfli
        WHERE carrid IN s_carrid
             AND connid IN s_connid
             AND cityfrom IN s_cfrom
             AND cityto IN s_cto.

    ENDFORM.                    " DATA_RETRIEVAL

     

     

     

     

Designed by Tistory.