-
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'SAP > 과제' 카테고리의 다른 글
8. 9주차 과제 - COLLECT (0) 2025.08.01 7. 8주차 과제 - 항공사 예약 조회 프로그램 #2 (0) 2025.07.21 6. 7주차 과제 - 항공사 예약 조회 프로그램 (0) 2025.07.10 4. 5주차 과제 - 검색 화면 구현 (0) 2025.06.27 3. 4주차 과제 - 서브토탈 구현 (0) 2025.06.27