입력한 날짜 사이의 주차계산은 어떻게 해야 할까요?
2010.01.02 ~ 2010.02.06 사이에 몇주차인지를 계산하려는 펑션이나 방법이 있나요?
7주차라는 답을 얻기 위한 방법은?
댓글 6
-
두잉
2011.02.10 21:36
-
초보자라네
2011.02.11 05:20
FROM ~ TO의 기간중에 입력한 날짜가 몇주차인지 계산하고자 하는 것입니다. 아시는분 다시 한번 답변 부탁드립니다.
-
Abap
2011.02.11 05:37
아마 두잉님께서는 저 위에 주소에 있는
Function 모듈 DATE_GET_WEEK
Import 매개변수 값
DATE 2010.11.19
Export 매개변수 값
WEEK 201046
해당년도와 해당주차가 나오는펑션입니다.
이걸 이용해서 7주차를 구하라는 뜻으로 붙여주신 것 같습니다.
혹시 제가 생각한 것일까 말씀드리려다가 궁금한점이 생기네요.
FROM ~ TO 의 기간은 유저가 스크린에 입력한다면..
그 기간중에 있는 날짜는 소스상에서 어떤 공식에 의해 생성되는 것인가요?
^^;정확한 의미를 모르겠습니다.
예를들어 2월 1일을 1주차로 놓고 3월 1일을 5주차로 놓고(가정하고) 계산한다는 의미인가요?
그러면 2월 12일은 2주차가 되도록요..?
-
초보자라네
2011.02.11 06:07
1. FROM값 입력 EX) 2010.01.02 ~
2. TO값 입력 EX) 2010.02.06
두개의 날짜를 입력해서 그 기간안에 입력한 날짜가 몇주차인지를 체크하려고 합니다. 입력한 날짜가 5주가 넘으면 날짜 입력시
5주까지만 날짜입력이 가능하게 하려고 하는것입니다.(5주가 넘으면 에러메세지를 보여주려고 합니다.) 도움을 주시면 감사하겠습니다.
-
홍길동
2011.02.11 18:58
from값으로 FM 'Date_get_week'를 돌려 주를 구하고, 이후 FM 'GET_WEEK_info_based_on_date' 과 'next_week'를 이용해서 월요일을 To값과 비교하여 5주체크하시면 되겠네요..
-
부엉이
2011.02.11 19:35
DATA week1 LIKE scal-week.
DATA week2 LIKE scal-week.
DATA date_st LIKE scal-date.
DATA day LIKE scal-indicator.
DATA date_diff(5) TYPE n.
DATA date_change TYPE sy-datum.
DATA : start_date TYPE SCAL-DATE,
end_date TYPE SCAL-DATE.
DATA : day_diff TYPE i,
week_diff TYPE i.
start_date = '20100201 '.
end_date = '20100228'.
**To get the Week of Start Date
CALL FUNCTION 'DATE_GET_WEEK'
EXPORTING
date = start_date
IMPORTING
week = week1
* EXCEPTIONS
* DATE_INVALID = 1
* OTHERS = 2
.
IF sy-subrc = 0.
**To get the First Day of the week from Start Date
CALL FUNCTION 'WEEK_GET_FIRST_DAY'
EXPORTING
week = week1
IMPORTING
date = date_st
* EXCEPTIONS
* WEEK_INVALID = 1
* OTHERS = 2
.
IF sy-subrc = 0.
ENDIF.
ENDIF.
date_diff = end_date - date_st.
day_diff = date_diff MOD 7.
week_diff = date_diff DIV 7.
IF ( ( day_diff >= 1 ) AND ( day_diff < 7 ) ).
week_diff = week_diff + 1.
ENDIF.
date_change = end_date.
IF day_diff = 0.
CALL FUNCTION 'DATE_COMPUTE_DAY'
EXPORTING
date = date_change
IMPORTING
day = day.
IF sy-subrc = 0.
IF day = 1.
week_diff = week_diff + 1.
ENDIF.
ENDIF.
ENDIF.
WRITE : week_diff.
여기 참고하시면 될 것 같습니다.
http://www.e-abap.net/zb/bbs/zboard.php?id=ABAPQnA&no=6413