실행 화면
DB에 2020년 데이터가 없어서 아무것도 나오지 않는다.
프로그램 로직
변수 문
TABLES: sflight, sbook.
DATA: gr_salv_tab TYPE REF TO cl_salv_table.
DATA : BEGIN OF wa.
INCLUDE TYPE spfli.
DATA : scarr TYPE scarr-carrname,
fldate TYPE sflight-fldate,
bookid TYPE sbook-bookid,
customid TYPE sbook-customid,
END OF wa,
gt_itab LIKE TABLE OF wa.
data: gv_today type D, "오늘날짜 담을 변수
gv_lastday like sy-datum. "마지막날짜 담을 변수
화면 디자인
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: p_carrid TYPE sflight-carrid OBLIGATORY DEFAULT 'AA'. "필수값
SELECT-OPTIONS: s_connid FOR sflight-connid,
s_fldate FOR sflight-fldate,
s_book FOR sbook-bookid,
s_custom FOR sbook-customid.
SELECTION-SCREEN END OF BLOCK b1.
초기값 설정
INITIALIZATION.
"날짜 계산
gv_today = sy-datum.
gv_today+6(2) = '01'.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
day_in = gv_today
IMPORTING
LAST_DAY_OF_MONTH = gv_lastday.
"SELECT-OPTIONS 초기값
s_fldate-sign = 'I'.
s_fldate-option = 'BT'. "BETWEEN
s_fldate-low = gv_today.
s_fldate-high = gv_lastday.
APPEND s_fldate. CLEAR s_fldate.
RP_LAST_DAY_OF_MONTHS
데이터 선택
START-OF-SELECTION.
SELECT * FROM spfli AS a
INNER JOIN sflight AS b
ON a~carrid = b~carrid
AND a~connid = b~connid
INNER JOIN scarr AS c
ON a~carrid = c~carrid
INNER JOIN sbook AS d
ON a~carrid = d~carrid
AND a~connid = d~connid
INTO CORRESPONDING FIELDS OF TABLE gt_itab
WHERE a~distance >= 9000
and a~distid = 'KM'
AND d~cancelled NE 'X'.
and a~carrid = p_carrid
and b~connid in s_connid
and b~fldate in s_fldate
and d~bookid in s_book
and d~customid in s_custom.
"int를 list로 출력해주는 구문
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = gr_salv_tab
CHANGING
t_table = gt_itab.
gr_salv_tab->display( ).
선택의 시작
사용자 F8 실행 후 구동하는 로직입니다.