항공편 가져오기
선행공부용 프로그램
*&---------------------------------------------------------------------*
*& Report Y_TEST_07
*&
*&---------------------------------------------------------------------*
REPORT Y_TEST_07.
" 국가 테이블.
DATA : LS_T005 TYPE T005,
LT_T005 LIKE TABLE OF LS_T005.
" 국가이름 테이블.
DATA : LS_T005T TYPE T005T,
LT_T005T LIKE TABLE OF T005T.
" LT_T005 채우기.
SELECT *
INTO TABLE LT_T005
FROM T005.
" LT_T005T 채우기.
SELECT *
INTO TABLE LT_T005T
FROM T005T
WHERE SPRAS = SY-LANGU.
TYPES : BEGIN OF ITAB,
LAND1 TYPE LAND1,
SPRAS TYPE SPRAS,
LANDX TYPE LANDX,
END OF ITAB.
DATA : LS_ITAB TYPE ITAB,
LT_ITAB LIKE TABLE OF LS_ITAB.
LOOP AT LT_T005 INTO LS_T005. " 기준테이블.
READ TABLE LT_T005T INTO LS_T005T WITH KEY LAND1 = LS_T005-LAND1.
IF SY-SUBRC = 0.
LS_ITAB-LANDX = LS_T005T-LANDX.
ENDIF.
LS_ITAB-LAND1 = LS_T005-LAND1.
LS_ITAB-SPRAS = LS_T005-SPRAS.
APPEND LS_ITAB TO LT_ITAB.
CLEAR: LS_ITAB.
ENDLOOP.
LOOP AT LT_ITAB INTO LS_ITAB.
WRITE:/ LS_ITAB-LAND1, LS_ITAB-SPRAS, LS_ITAB-LANDX.
ENDLOOP.
주제 : 항공편은 American Airline(AA) 를 이용하여 여행을 갈 생각이다.
출발은 2010년 5월 30일부터 2010년 6월 30일 사이에 휴가를 내서 출발할 예정이며, 여행지는 나의 휴가날에 AA 항공사에 티켓이 있으면 여행을 떠날 생각이다.
해당 비행편의 출발시간과 도착시간을 구하고, 해당 항공사의 URL(홈페이지 주소) , 와 남은 좌석수를 가져오도록 하자.
DB
SPFLI - CARRID(AA,항공편)
SCARR- CARRID(AA, 항공편)
SFLIGHT - SEATSMAX(총 좌석수), SEATSOCC (예약된 좌석수)
스크린
항공편 입력 필드 AA
휴가일 FROM 입력 필드
휴가끝 TO 입력 필드
로직
SFLIGHT DB 에서 AA 항공사의 출발 일자가 2010년 5월 30일 부터 2010년 6월 30일 사이의 항공편을 구하고 (항공편 ID : CARRID)
CARRID 를 통해 SPFLIT DB 를 읽어서 여행지 (CITYFROM, CITYTO) 를 가져온다.
홈페이지는 SCARR DB를 읽어서 항공사에 맞는 URL을 가져오도록 한다.
남은 좌석수는SFLIGHT DB 에서 SEATMAX 에서 SEATSOCC 를 빼도록 한다.
출력
CARRID, CONNID, CITYFRON, CITYTO, DEPTIME, ARRTIME, 전체좌석, 예약좌석, 남은 좌석, URL 을 출력한다.
TABLES : SPFLI, SFLIGHT.
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_CARRID FOR SPFLI-CARRID NO-EXTENSION NO INTERVALS.
PARAMETERS : P_FRDATE TYPE SY-DATUM .
PARAMETERS : P_TODATE TYPE SY-DATUM .
SELECTION-SCREEN END OF BLOCK B01.
DATA : LS_SPFLI TYPE SPFLI,
LT_SPFLI TYPE TABLE OF SPFLI.
DATA : LS_SCARR TYPE SCARR,
LT_SCARR TYPE TABLE OF SCARR.
DATA : LS_SFLIGHT TYPE SFLIGHT,
LT_SFLIGHT TYPE TABLE OF SFLIGHT.
" SPFLI 정보 갖고오기.
SELECT *
INTO TABLE LT_SPFLI
FROM SPFLI
WHERE CARRID IN S_CARRID.
" SFLIGHT 정보 갖고오기.
SELECT *
INTO TABLE LT_SFLIGHT
FROM SFLIGHT
WHERE CARRID IN S_CARRID
AND ( FLDATE GT P_FRDATE
AND FLDATE LT P_TODATE ).
" SCARR 정보 갖고오기.
SELECT *
INTO TABLE LT_SCARR
FROM SCARR
WHERE CARRID IN S_CARRID.
TYPES : BEGIN OF A01,
CARRID TYPE S_CARR_ID,
CONNID TYPE S_CONN_ID,
CITYFROM TYPE S_FROM_CIT,
CITYTO TYPE S_TO_CITY,
DEPTIME TYPE S_DEP_TIME,
ARRTIME TYPE S_ARR_TIME,
SEATSMAX TYPE S_SEATSMAX, " 전좌석 수.
SEATSOCC TYPE S_SEATSOCC, " 점유좌석 수.
SEATS TYPE I,
URL TYPE S_CARRURL,
END OF A01.
DATA : LS_A01 TYPE A01.
DATA : LT_A01 LIKE TABLE OF LS_A01.
**READ TABLE LT_SPFLI WITH KEY S_CARRID INTO LS_SPFLI.
**READ TABLE LT_SFLIGHT INTO LS_SFLIGHT WITH KEY CARRID = S_CARRID .
**READ TABLE LT_SCARR WITH KEY S_CARRID INTO LS_SCARR.
LOOP AT LT_SFLIGHT INTO LS_SFLIGHT.
READ TABLE LT_SPFLI INTO LS_SPFLI WITH KEY CARRID = LS_SFLIGHT-CARRID
CONNID = LS_SFLIGHT-CONNID.
IF SY-SUBRC = 0.
LS_A01-CARRID = LS_SPFLI-CARRID.
LS_A01-CONNID = LS_SPFLI-CONNID.
LS_A01-CITYFROM = LS_SPFLI-CITYFROM.
LS_A01-CITYTO = LS_SPFLI-CITYTO.
LS_A01-DEPTIME = LS_SPFLI-DEPTIME.
LS_A01-ARRTIME = LS_SPFLI-ARRTIME.
ENDIF.
READ TABLE LT_SCARR INTO LS_SCARR WITH KEY CARRID = LS_SFLIGHT-CARRID.
IF SY-SUBRC = 0.
LS_A01-URL = LS_SCARR-URL.
ENDIF.
LS_A01-SEATSMAX = LS_SFLIGHT-SEATSMAX.
LS_A01-SEATSOCC = LS_SFLIGHT-SEATSOCC.
LS_A01-SEATS = LS_A01-SEATSMAX - LS_A01-SEATSOCC. " 잔여좌석 수
APPEND LS_A01 TO LT_A01.
CLEAR LS_A01.
ENDLOOP.
LOOP AT LT_A01 INTO LS_A01.
WRITE:/ LS_A01-CARRID, LS_A01-CONNID, LS_A01-CITYFROM, LS_A01-CITYTO, LS_A01-DEPTIME, LS_A01-ARRTIME, LS_A01-SEATSMAX, LS_A01-SEATSOCC, LS_A01-SEATS, (40) LS_A01-URL.
ENDLOOP.
'ERP-SAP > ABAP연습문제' 카테고리의 다른 글
초보를 위한 ABAP 연습문제 출제 4강 ( * 을 이용하여 ◇ 마름모 그리기 ) (0) | 2013.12.02 |
---|---|
초보를 위한 ABAP 연습문제 출제 3강 (Write 문의 심화, Data Control 방법, Do 구문) (0) | 2013.11.29 |
초보를 위한 ABAP 연습문제 출제 2강(RADIO 버튼 생성 및 Control) (0) | 2013.11.29 |
초보를 위한 ABAP 연습문제 출제 1강 (CBO DB 생성 및 DATA INSERT) (0) | 2013.11.29 |