ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7. 8주차 과제 - 항공사 예약 조회 프로그램 #2
    SAP/과제 2025. 7. 21. 14:31

     

     

     

    https://engineering-student.tistory.com/92

     

    4. 7주차 과제 - 항공사 예약 조회 프로그램

    과제내용- 테이블 SBOOK을 조회하는 프로그램 구현.검색화면의 input 필드- CARRID : Text Element - Airline, 필수값/초기값 설정 - AA - CONNID : Text Element - Connection Number, 필수값/초기값 설정 - 0017 - FLDATE : Text

    engineering-student.tistory.com

     

    이전 프로그램에 이어 기능을 더 추가한다.

     

    과제내용

    - 이전 프로그램에서 출력 필드 추가하기.

    출력화면 추가 필드

    - CARRNAME   =>> SCARR

    - NAME  =>> SCUSTOM
    - TELEPHONE  =>> SCUSTOM
    - CUSTTYPE   =>> SCUSTOM

     


    결과 화면

    * 소스코드

    *&---------------------------------------------------------------------*
    *& Report Z7WEEK_REP
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT Z7WEEK_REP.

    TABLES:    sbook.

    TYPE-POOLS: slis.                                 "ALV Declarations

    *Data Declaration
    *----------------
    TYPES: BEGIN OF t_sbook,
      carrid     TYPE sbook-carrid,
      carrname   TYPE scarr-carrname,
      connid     TYPE sbook-connid,
      fldate     TYPE sbook-fldate,
      bookid     TYPE sbook-bookid,
      customid   TYPE sbook-customid,
      name       TYPE scustom-name,
      telephone  TYPE scustom-telephone,
      custtype   TYPE scustom-custtype,
      loccuram   TYPE sbook-loccuram,
      loccurkey  TYPE sbook-loccurkey,
      order_date TYPE sbook-order_date,
      cancelled  TYPE sbook-cancelled,
     END OF t_sbook.

    DATA: it_sbook TYPE STANDARD TABLE OF t_sbook ,
          wa_sbook TYPE t_sbook.

    *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.
    PARAMETERS p_carrid LIKE sbook-carrid OBLIGATORY DEFAULT 'AA'.
    PARAMETERS p_connid LIKE sbook-connid OBLIGATORY DEFAULT '0017'.
    PARAMETERS p_fldate LIKE sbook-fldate OBLIGATORY DEFAULT '20171219'.
    SELECTION-SCREEN END OF BLOCK part1.

    SELECTION-SCREEN BEGIN OF BLOCK part2 WITH FRAME TITLE text-002.
    SELECT-OPTIONS s_custid FOR sbook-customid.
    PARAMETERS: r1 RADIOBUTTON GROUP rad1 DEFAULT 'X',
                r2 RADIOBUTTON GROUP rad1,
                r3 RADIOBUTTON GROUP rad1.
    SELECTION-SCREEN END OF BLOCK part2.




    ************************************************************************
    *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.
      fieldcatalog-key         = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'CONNID'.
      fieldcatalog-seltext_m   = 'Flight Connection Number'.
      fieldcatalog-col_pos     = 1.
      fieldcatalog-key         = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'FLDATE'.
      fieldcatalog-seltext_m   = 'Flight date'.
      fieldcatalog-col_pos     = 2.
      fieldcatalog-key         = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'BOOKID'.
      fieldcatalog-seltext_l   = 'Booking number'.
      fieldcatalog-col_pos     = 3.
      fieldcatalog-key         = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'CUTSOMID'.
      fieldcatalog-seltext_m   = 'Customer Number'.
      fieldcatalog-col_pos     = 4.
      fieldcatalog-hotspot     = 'X'.    " 하이퍼링크
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'LOCCURAM'.
      fieldcatalog-seltext_m   = 'Price of booking in local currency of airline'.
      fieldcatalog-col_pos     = 5.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'LOCCURKEY'.
      fieldcatalog-seltext_l   = 'Payment currency'.
      fieldcatalog-col_pos     = 6.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'ORDER_DATE'.
      fieldcatalog-seltext_m   = 'Booking Date'.
      fieldcatalog-col_pos     = 7.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.

      fieldcatalog-fieldname   = 'CANCELLED'.
      fieldcatalog-seltext_m   = 'Cancelation flag'.
      fieldcatalog-col_pos     = 8.
      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_sbook
        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,
            gs_where    TYPE c LENGTH 30.

      IF r1 = 'X'.
        gs_where = ' '.
      ELSEIF r2 = 'X'.
        gs_where = 'CANCELLED <> ''X'''.
      ELSEIF r3 = 'X'.
        gs_where = 'CANCELLED = ''X'''.
      ENDIF.

      SELECT sb~CARRID, sc~CARRNAME, sb~CONNID, sb~FLDATE, sb~BOOKID, sb~CUSTOMID,
        st~NAME, st~TELEPHONE, st~CUSTTYPE, sb~LOCCURAM, sb~LOCCURKEY, sb~ORDER_DATE, sb~CANCELLED
        FROM ( sbook as sb INNER JOIN scarr as sc ON sb~carrid = sc~carrid )
        INNER JOIN scustom as st ON sb~customid = st~id
        INTO TABLE @it_sbook
        WHERE sb~carrid = @p_carrid
             AND sb~connid = @p_connid
             AND sb~fldate = @p_fldate
             AND sb~customid IN @s_custid
             AND (gs_where).  " 동적 sql

    ENDFORM.                    " DATA_RETRIEVAL

     

     

     

Designed by Tistory.