달의 마지막날 가져오는

실행 화면

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 실행 후 구동하는 로직입니다.