728x90
반응형
시작일은 시스템 일자 기준부터 다음날이다. (+1)
종료일은 시작일부터 WORKING DAY 7일 이후이다.
이런경우 주말과 공휴일을 제외하고 날짜를 세는 펑션을 사용한다. 여러 펑션을 사용할수 있는데 기능이 조금씩 다르다.
펑션 종류
- WDKAL_DATE_ADD_FKDAYS : +일자만 가능한 펑션
- BKK_ADD_WORKINGDAY : +,- 일자 둘다 가능
- HOLIDAY_CHECK_AND_GET_INFO : 공휴일 여부 펑션, DATE_COMPUTE_DAY : 일자에 해당하는 요일 펑션
3번 펑션 두가지를 사용해 RFC 펑션을 만들어본다.
HOLIDAY_CHECK_AND_GET_INFO
DATE_COMPUTE_DAY
[SOURCE CODE]
DATA: l_cnt TYPE i,
l_date TYPE datum,
l_holiday TYPE scal-indicator,
l_day TYPE scal-indicator.
CLEAR l_cnt.
l_date = i_begda.
CHECK i_wday > 0.
WHILE l_cnt <= i_wday.
CLEAR: l_holiday, l_day.
*공휴일 여부
CALL FUNCTION 'HOLIDAY_CHECK_AND_GET_INFO'
EXPORTING
date = l_date
holiday_calendar_id = i_fabkl
with_holiday_attributes = 'X'
IMPORTING
holiday_found = l_holiday.
*일자에 해당하는 요일
CALL FUNCTION 'DATE_COMPUTE_DAY'
EXPORTING
date = l_date
IMPORTING
day = l_day.
*공휴일도 주말도 아닐 경우 카운트 1증가
IF l_holiday NE 'X' AND l_day NE '6' AND l_day NE '7'.
ADD 1 TO l_cnt.
ENDIF.
IF l_cnt EQ i_wday. "요구한 working day 도달 시 일자반환 후 exit
e_endda = l_date.
EXIT.
ENDIF.
ADD 1 TO l_date. "1일 증가
ENDWHILE.
[프로그램에서 사용]
SELECT-OPTIONS: s_psttr FOR plaf-psttr, "계획오더 시작일
DATA: l_begda TYPE begda,
l_endda TYPE endda.
l_begda = sy-datum + 1.
CALL FUNCTION 'ZS1D_MINI_FM00_001'
EXPORTING
i_wday = 7
i_begda = l_begda
i_fabkl = 'KR'
IMPORTING
e_endda = l_endda.
so_psttr-low = l_begda.
so_psttr-high = l_endda.
so_psttr-sign = 'I'.
so_psttr-option = 'EQ'.
APPEND s_psttr.
WDKAL_DATE_ADD_FKDAYS
CALL FUNCTION 'WDKAL_DATE_ADD_FKDAYS'
EXPORTING
i_date = i_begda "시작날짜
i_fkday = i_wday
i_fabkl = i_fabkl
IMPORTING
e_date = e_endda.
BKK_ADD_WORKINGDAY
SELECT-OPTIONS: s_pedtr FOR plaf-pedtr, "계획오더 시작일
DATA : lv_datum TYPE sy-datum.
CALL FUNCTION 'BKK_ADD_WORKINGDAY'
EXPORTING
i_date = sy-datum
i_days = 7
i_calendar1 = 'KR'
IMPORTING
e_date = lv_datum.
s_pedtr-low = sy-datum.
s_pedtr-high = lv_datum.
APPEND s_pedtr. CLEAR s_pedtr.
728x90
반응형
'ABAP' 카테고리의 다른 글
Field-symbols 2 (0) | 2023.02.16 |
---|---|
Field-symbols 1 (0) | 2023.02.16 |
RFC 5 (0) | 2023.02.16 |
RFC 4 (0) | 2023.02.14 |
RFC 3 (0) | 2023.02.14 |
댓글