반응형
FUNCTION YGET_PERIOD.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(I_SDATE) TYPE DATUM DEFAULT SY-DATUM
*" VALUE(I_EDATE) TYPE DATUM DEFAULT SY-DATUM
*" EXPORTING
*" REFERENCE(E_PERIOD) TYPE CHAR10
*"----------------------------------------------------------------------
DATA: LV_EDATE TYPE DATUM.
DATA: LV_YEARS TYPE I,
LV_MONTHS TYPE I,
LV_DAYS TYPE I.
DATA: LV_YEAR1 TYPE I,
LV_YEAR2 TYPE I,
LV_MONTH1 TYPE I,
LV_MONTH2 TYPE I,
LV_DAY1 TYPE I,
LV_DAY2 TYPE I.
" 시작일 년/월/일로 분리
LV_YEAR1 = I_SDATE+0(4).
LV_MONTH1 = I_SDATE+4(2).
LV_DAY1 = I_SDATE+6(2).
" 종료일 년/월/일로 분리 -> 종료일 없으면 현재일자로 치환
CLEAR LV_EDATE.
IF I_EDATE IS INITIAL.
LV_EDATE = SY-DATUM.
ELSE.
LV_EDATE = I_EDATE.
ENDIF.
LV_YEAR2 = LV_EDATE+0(4).
LV_MONTH2 = LV_EDATE+4(2).
LV_DAY2 = LV_EDATE+6(2).
" 연도 차이 계산
LV_YEARS = LV_YEAR2 - LV_YEAR1.
" 월 차이 계산
LV_MONTHS = LV_MONTH2 - LV_MONTH1.
" 일 차이 계산
LV_DAYS = LV_DAY2 - LV_DAY1.
"일 차이가 0 이상이면 월에 +1 (즉, 시작읿루터 종료일까지를 포함하여 계산)
IF LV_DAYS >= 0.
LV_MONTHS = LV_MONTHS + 1.
ENDIF.
"월수가 음수이면 연도에서 1 빼고 월에 12 더하기
IF LV_MONTHS < 0.
LV_YEARS = LV_YEARS - 1.
LV_MONTHS = LV_MONTHS + 12.
ENDIF.
"년이 음수가 되지 않도록 보정
IF LV_YEARS < 0.
LV_YEARS = 0.
LV_MONTHS = 0.
ENDIF.
E_PERIOD = CONV STRING( |{ LV_YEARS }년 { LV_MONTHS }개월| ).
ENDFUNCTION.

반응형
'IT WORK > SAP FI and ABAP' 카테고리의 다른 글
| [ABAP] 사용자 날짜 형식에 맞춰서 날짜 저장 (0) | 2026.01.16 |
|---|---|
| [SAP FI] Hana Upgrade 이후 BP 화면에서 회사코드 전환 화면이 안나올 때 (2) | 2025.12.02 |
| [SAP ABAP] 엑셀 매크로 허용해도 안될 때 (0) | 2025.12.01 |
| [ABAP] ALV 필드카탈로그 수정사항 반영 안될 (0) | 2025.10.31 |
| [SAP FI] 유효성 확인 / 대체 exit 레포트 매핑 (0) | 2025.10.29 |