가령 2008.11.17 ~ 2009.08.23 사이에 존재하는 회계월 구해서 어쩌구 저쩌구 해달라는 업무지시를 받고 회계월을 일단 구해보자는 생각으로 테스트 프로그램을 만들었습니다.
혹시라도 이런 필요가 생기면 참고하세요.
REPORT ytest_syh_002.
*---- screen
PARAMETERS : l_frdate TYPE sydatum,
l_todate TYPE sydatum.
TYPES : BEGIN OF ty_period,
spmon TYPE spmon,
qty TYPE dzmeng,
uom TYPE dzieme,
END OF ty_period.
DATA : it_period TYPE TABLE OF ty_period WITH HEADER LINE.
DATA : l_initial_01 TYPE sydatum,
l_ending_01 TYPE sydatum,
l_interim_01 TYPE sydatum.
*---- step 0.
CONCATENATE l_frdate(6) '01' INTO l_initial_01.
CONCATENATE l_todate(6) '01' INTO l_ending_01.
CLEAR : it_period, it_period[].
CLEAR : l_interim_01.
*---- step 1.
it_period-spmon = l_initial_01(6).
APPEND it_period. CLEAR it_period.
*---- step 2.
DO.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = l_initial_01
days = '00'
months = '01'
signum = '+'
years = '00'
IMPORTING
calc_date = l_interim_01.
IF l_interim_01 < l_ending_01.
it_period-spmon = l_interim_01(6).
APPEND it_period. CLEAR it_period.
l_initial_01 = l_interim_01.
ELSE.
EXIT.
ENDIF.
ENDDO.
*---- step 3.
it_period-spmon = l_ending_01(6).
APPEND it_period. CLEAR it_period.
*---- output
LOOP AT it_period.
WRITE : /1 it_period-spmon.
ENDLOOP.
*---- screen
PARAMETERS : l_frdate TYPE sydatum,
l_todate TYPE sydatum.
TYPES : BEGIN OF ty_period,
spmon TYPE spmon,
qty TYPE dzmeng,
uom TYPE dzieme,
END OF ty_period.
DATA : it_period TYPE TABLE OF ty_period WITH HEADER LINE.
DATA : l_initial_01 TYPE sydatum,
l_ending_01 TYPE sydatum,
l_interim_01 TYPE sydatum.
*---- step 0.
CONCATENATE l_frdate(6) '01' INTO l_initial_01.
CONCATENATE l_todate(6) '01' INTO l_ending_01.
CLEAR : it_period, it_period[].
CLEAR : l_interim_01.
*---- step 1.
it_period-spmon = l_initial_01(6).
APPEND it_period. CLEAR it_period.
*---- step 2.
DO.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = l_initial_01
days = '00'
months = '01'
signum = '+'
years = '00'
IMPORTING
calc_date = l_interim_01.
IF l_interim_01 < l_ending_01.
it_period-spmon = l_interim_01(6).
APPEND it_period. CLEAR it_period.
l_initial_01 = l_interim_01.
ELSE.
EXIT.
ENDIF.
ENDDO.
*---- step 3.
it_period-spmon = l_ending_01(6).
APPEND it_period. CLEAR it_period.
*---- output
LOOP AT it_period.
WRITE : /1 it_period-spmon.
ENDLOOP.




댓글을 달아 주세요