CAFE

ABAP

[Func] 날짜 관련되는 팁 & 함수

작성자우승권|작성시간08.10.27|조회수2,829 목록 댓글 0

* 6자리 문자로 8자리 일자 만드는 팁

 

CONCATENATE gv_yyyymm(6) '01' INTO lv_yyyymmto.  ==> 8자리 일자

 

 

* 입력된 값의 -1월 계산하는 함수

 

CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
    EXPORTING
      date      = '20060101'
      days      = '00'
      months    = '01'
      signum    = '-'
      years     = '00'
    IMPORTING
      calc_date = pv_calc_date.

 

날짜를 변경하려면 days, 월을 변경하려면 months, 년도를 변경하려면 years에 해당 하는 값을 입력하고,

signum에 '+' 또는 '-' 값을 입력한다.

 

이 함수의 문제점이 있음.

=> 반드시 date의 일자에는 '01'로 끝나야 한다. 만약 '20050131'로 해서 month를 +1하게 되면 20050301이 된다.

 

 

* 만약 다음달의 마지막 날의 일자를 구하려면...

 

   'RP_CALC_DATE_IN_INTERVAL' 함수와 'RP_LAST_DAY_OF_MONTHS' 함수를 이용해서 계산한다.

 

  CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
    EXPORTING
      day_in            = lv_to_date
    IMPORTING
      last_day_of_month = gv_to_date
    EXCEPTIONS
      day_in_no_date    = 1
      OTHERS            = 2.

 

 

* 두 날짜의 개월수를 구하는 함수

 

CALL FUNCTION 'RH_PM_CONVERT_DATE_TO_MONTH'
EXPORTING
BEGDA = GV_BEGDA “시작일자
ENDDA = GV_ENDDA “종료일자
IMPORTING
MONTHS = ACT_MONTHS “개월수
* EXCEPTIONS
* INVALID_BEGDA = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

 

 

날짜관련 유용한 Function입니다.

1. RH_GET_DATE_DAYNAME

- 입력일자가 월요일부터 몇번째 일자인지, 입력일자 요일의 이름(MON, TUE 등)
을 return해 줍니다.

2. DATE_COMPUTE_DAY
- 입력일자가 월요일부터 몇번째 일자인지 return해 줍니다.

3. DATE_GET_WEEK
- 입력일자가 해당 년도의 몇번째 주차인지 return해 줍니다.

4. HOLIDAY_CHECK_AND_GET_INFO
- 입력일자가 공휴일인지 check해 줍니다.

5. WEEK_GET_FIRST_DAY
- 입력주차의 월요일을 return해 줍니다.

6. RP_LAST_DAY_OF_MONTHS
- 입력일자가 속한 월의 마지막 일자를 return해 줍니다.

7. LAST_DAY_IN_PERIOD_GET
- 입력년도(I_GJAHR)를 구간(I_PERIV)으로 나누어서 입력한 구간(I_POPER)의
마지막 일자를 return해 줍니다.

8.CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = DAYIN
IMPORTING
LAST_DAY_OF_MONTH = DAYOUT.

해당 달의 마지막 날을 계산하는 function

DAYIN 에 날짜를 넣으면...
DAYOUT이 마지막 날짜를 가지고 옵니다..

9. from date와 to date를 넘겨주면 그 기간을 일, 월, 년으로 return
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
I_DATE_FROM = '19991008'
I_DATE_TO = '20000116'
IMPORTING
E_DAYS = t_days
E_MONTHS = t_months
E_YEARS = t_years.

결과 : t_days = 466
t_months = 16
t_years = 2

10.월의 마지막 일 return
REPORT zaja .

DATA: v_aa(10).
CALL FUNCTION 'END_OF_MONTH_DETERMINE'
EXPORTING
datum = sy-datum
IMPORTING
tt = v_aa
EXCEPTIONS
OTHERS = 1.

WRITE:/ v_aa.

====> 31

11.해당일의 요일을 숫자로 RETURN해주는 함수입니다
DATE_COMPUTE_DAY

월 : 1
화 : 2
수 : 3

......

일 : 7

12.원하는 날짜 그리고 월을 빼주는 평션

SIGNUM = + 면 미래일자를 - 면 과거일자를 콜함
RP_CALC_DATE_IN_INTERVAL

Import parameters Value

DATE 2003.02.06
DAYS 00
MONTHS 01
SIGNUM +
YEARS 00

==> 결과값

Export parameters Value

CALC_DATE 2003.03.06

13. 날짜가 유효한지 Check
DATE_CHECK_PLAUSIBILITY


14. 일자 사이의 개월 수 계산.

call function 'RH_PM_CONVERT_DATE_TO_MONTH'
exporting
begda = begda " 시작일자
endda = endda " 종료일자
importing
months = act_months " 개월 수


15. 일자를 입력하면 주차와 해당주차의 월요일과 일요일을 반환하는 함수

CALL FUNCTION 'GET_WEEK_INFO_BASED_ON_DATE'
EXPORTING
DATE = P_DATE
IMPORTING
WEEK = P_WEEK
MONDAY = P_MONDAY
SUNDAY = P_SUNDAY.

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼