입력받은 월이 12월이면 결과값으로 10월이 나오게 하고 싶어요.
어디서 자료를 본듯한데 막상 찾으니까 안보여서 결국 글을 올립니다.
PARAMETERS : P_BDATJ LIKE Z10COT001-BDATJ OBLIGATORY, " Posting date YYYY
P_POPER LIKE Z10COT001-POPER OBLIGATORY. " Posting period
DATA : P_START TYPE SY-DATUM,
P_END TYPE SY-DATUM.
P_START = P_BDATJ(4) + P_POPER+1(2).
P_END = P_START - 2.
모르면 무식하게 부딪혀 보는데 저의 짧은 지식으로 이렇게 코딩을 했는데 역시 안되네요. ㅠㅠ
P_BDATJ = '2007'이고 P_POPER='012'일 경우에 P_START='200712'가 되고 P_END='200710' 이렇게 구하고 싶습니다.
좋은 방법 없을까요?
* 참고하시구요
DATA in_datum TYPE sy-datum.
DATA out_datum TYPE sy-datum.
in_datum = sy-datum.
*" 작업가능일(WORKING DAY 기준) 구하기
CALL FUNCTION 'BKK_ADD_WORKINGDAY'
EXPORTING
i_date = in_datum " 기준일자
i_days = '2' " Working day기준 + 2일 후
i_calendar1 = 'KR' " 작업달력
IMPORTING
e_date = out_datum. " Working day기준 + 2일
*=========================================================
*" Date +/- year/month/day
CALL FUNCTION 'J_1H_CAL_DATE_IN_INTERVAL'
EXPORTING
date = in_datum " 기준일자
days = '01' " +/- 일
months = '00' " +/- 월
signum = '-' " +/-
years = '00' " +/- 년
IMPORTING
calc_date = out_datum. " 기준일자 - 1
*=========================================================
*" 해당월의 시작일과 마지막일자
CONCATENATE sy-datum(6) '01' INTO in_datum.
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = in_datum " 시작일자
IMPORTING
last_day_of_month = out_datum " 마지막일자
EXCEPTIONS
day_in_no_date = 1
OTHERS = 2.
*=========================================================
*" 일자에 대해 숫자로 변환(월요일 = '1')
DATA l_chasu TYPE c.
CALL FUNCTION 'DATE_COMPUTE_DAY'
EXPORTING
date = in_datum
IMPORTING
day = l_chasu.
* 이렇게 한번 해보세요
PARAMETERS : P_BDATJ LIKE Z10COT001-BDATJ OBLIGATORY, " Posting date YYYY
P_POPER LIKE Z10COT001-POPER OBLIGATORY. " Posting period
DATA : P_START TYPE SY-DATUM,
P_END TYPE SY-DATUM.
DATA : L_DATUM TYPE SY-DATUM.
CONCATENATE P_BDATJ(4) P_POPER+1(2) '01' INTO L_DATUM.
P_START = P_BDATJ(4) + P_POPER+1(2).
CALL FUNCTION 'J_1H_CAL_DATE_IN_INTERVAL'
EXPORTING
date = L_DATUM
days = '00'
months = '02'
signum = '-'
years = '00'
IMPORTING
calc_date = L_DATUM. " 2개월 전 1일
P_END = L_DATUM(6).