-
7. 8주차 과제 - 항공사 예약 조회 프로그램 #2SAP/과제 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'SAP > 과제' 카테고리의 다른 글
10. 11주차 과제 - 테이블 생성 (0) 2025.08.19 8. 9주차 과제 - COLLECT (0) 2025.08.01 6. 7주차 과제 - 항공사 예약 조회 프로그램 (0) 2025.07.10 5. 6주차 과제 - 검색 화면 구현 (0) 2025.07.02 4. 5주차 과제 - 검색 화면 구현 (0) 2025.06.27