질문을 두개나 올리네요^^;;; 죄송합니다.
우선 제가 아래처럼^^;
SELECTION-SCREEN : BEGIN OF BLOCK a1 WITH FRAME TITLE text-t01.
PARAMETERS : p_bukrs TYPE bkpf-bukrs DEFAULT '1000'.
SELECT-OPTIONS : p_hkont FOR bseg-hkont obligatory.
SELECT-OPTIONS : p_budat FOR ce1z001-perio NO-EXTENSION.
SELECT-OPTIONS : p_bstat FOR bkpf-bstat.
SELECTION-SCREEN : END OF BLOCK a1.
요로케 만들어서 p_budat 에 조건을 주었습니다.
조건은 기간인데요.
날짜에 대한 입력값을 받으면 (예 입력값 012.2009 ~ 001.2010 )
아래처럼 연산합니다.
(3개월씩 플러스 되고, high값은 2010년 4월의 31일로 이동하도록 짠 것입니다.)
form PERIOD .
if p_budat-low is not initial.
DATA : LAST_DAY TYPE SY-DATUM,
FROM TYPE SY-DATUM,
YEAR TYPE SY-DATUM,
MONTH TYPE SY-DATUM,
ex_mon type sy-datum,
ts_mon type sy-datum,
to type sy-datum,
NEWFROM TYPE SY-DATUM,
newto type sy-datum.
MOVE P_BUDAT-LOW(4) TO YEAR.
MOVE P_BUDAT-LOW+5(2) TO MONTH.
CONCATENATE YEAR MONTH '01' INTO NEWFROM.
CLEAR YEAR.
CLEAR MONTH.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = NEWFROM
days = '00'
months = '03'
SIGNUM = '+'
years = '00'
IMPORTING
CALC_DATE = EX_MON.
elseif p_budat-low is initial.
?????????????????????????????????
(어떤 조건을 주어야 할까요?)??????????????????
endif.
*MOVE EX_MON TO FROM.
.
IF P_BUDAT-HIGH IS NOT INITIAL.
MOVE P_BUDAT-HIGH(4) TO YEAR.
MOVE P_BUDAT-HIGH+5(2) TO MONTH.
CONCATENATE YEAR MONTH '01' INTO NEWTO.
CLEAR YEAR.
CLEAR MONTH.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' "last month calculate
EXPORTING
date = NEWTO
days = '00'
months = '03'
signum = '+'
years = '00'
IMPORTING
calc_date = ts_mon. "ex_mon = last month
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' "last day calculate
EXPORTING
day_in = ts_mon "p_budat-high
IMPORTING
last_day_of_month = last_day.
elseif p_budat-high is initial.
newto = sy-datum.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' "last day calculate
EXPORTING
day_in = newto "p_budat-high
IMPORTING
last_day_of_month = last_day.
endif.
*move last_day to to.
gs_period-from = ex_mon.
gs_period-to = last_day.
문제는 이제.. 값을 입력 안했을 때 인데.. high 값은그냥 현재까지 주면 되는데
low 값이 아무것도 없을 때 어떻게 조건을 주어야 할까요!?
^^초보에게 자비로운 답변 부탁드립니다..
(순간 생각난게.. 그냥 저대로 공백줘야 하나!? 라는 생각을^^;;)
댓글 3
-
버미!
2010.04.22 00:50
Posting Date 필드 같은 데, p_budat 필드의 Low값이 필요하다면 필수 입력(OBLIGARTORY 맞나?)으로 해버리는 것이 제일 간단합니다. -
you1228
2010.04.22 02:18
필수값이 아니라면..
INITIALIZATION 밑에..sy-datum값으로 짤라서 넣던가..아님
start-of-selection.에 low값을 체크해서 없으면...sy-datum을 짤라서 넣어주셔도 될듯한데요..
-
Abap consultant
2010.04.22 04:48
ㄴ두분 답변 감사합니다^^ e abap 알라뷰에요^^
제 해결방법은 그냥 필수필드로 만들었습니다.
you 1228 님의 답변은 사실 high 값에 넣어놨답니다^^;