728x90
반응형
실행화면
2년전부터 오늘까지의 데이터를 가져온다.
보기에만 일자가 들어간게 아니라 실제 날짜 선택에 들어갔을 때 값으로도 들어가 있게 한다.
날짜 조건에 맞는 데이터만 가져온다.
프로그램 로직
변수 선언
TABLES: sflight.
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,
currency TYPE sflight-currency,
END OF wa,
gt_itab LIKE TABLE OF wa.
DATA: ca_date TYPE p0001-begda. "SE37에서 TYPE 확인
화면 구성
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: pa_carr TYPE sflight-carrid OBLIGATORY DEFAULT 'AA'. "필수값
SELECT-OPTIONS: s_connid FOR sflight-connid,
s_fldate FOR sflight-fldate.
PARAMETERS: pa_coun TYPE spfli-countryfr.
SELECTION-SCREEN END OF BLOCK b1.
초기값 설정
INITIALIZATION.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = sy-datum
days = 0 "일
months = 0 "월
signum = '-'
years = 3 "년
IMPORTING
calc_date = ca_date.
"SELECT-OPTION 초기값
MOVE: 'I' TO s_fldate-sign, "INCLUDE, 아래값 포함
ca_date TO s_fldate-low, "AA부터
sy-datum TO s_fldate-high. "LH까지
APPEND s_fldate.
CLEAR s_fldate.
RP_CALC_DATE_IN_INTERVAL
기준 일자에 대해 일, 월, 년 이전 또는 이후 날짜를 계산하는 function이다.
Event
AT SELECTION-SCREEN.
IF pa_coun IS INITIAL. "아무것도 입력하지 않았을때
SELECT * FROM sflight AS a
INNER JOIN spfli AS b
ON a~carrid = b~carrid
AND a~connid = b~connid
INNER JOIN scarr AS c
ON a~carrid = c~carrid
INTO CORRESPONDING FIELDS OF TABLE gt_itab
WHERE a~carrid = pa_carr
AND a~connid IN s_connid
AND a~fldate IN s_fldate.
ELSEIF pa_coun IS NOT INITIAL. "입력했을때
SELECT * FROM sflight AS a
INNER JOIN spfli AS b
ON a~carrid = b~carrid
AND a~connid = b~connid
INNER JOIN scarr AS c
ON a~carrid = c~carrid
INTO CORRESPONDING FIELDS OF TABLE gt_itab
WHERE a~carrid = pa_carr
AND a~connid IN s_connid
AND a~fldate IN s_fldate
AND b~countryfr = pa_coun.
ENDIF.
"오름차순 정렬
SORT gt_itab BY carrid DESCENDING.
SORT gt_itab BY connid DESCENDING.
SORT gt_itab BY fldate DESCENDING.
"int를 list로 출력해주는 구문
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = gr_salv_tab
CHANGING
t_table = gt_itab.
gr_salv_tab->display( ).
728x90
반응형
'ABAP' 카테고리의 다른 글
Module-pool 1 (변경) (0) | 2023.02.14 |
---|---|
달의 마지막날 가져오는 function (RP_LAST_DAY_OF_MONTHS) (0) | 2023.02.14 |
Subscreen (2) | 2023.01.24 |
Parameter, Select-options, Initialization (0) | 2023.01.24 |
간단한 SQL 실습 2 (0) | 2023.01.24 |
댓글