SELECT-OPTIONS 를 이용하여, LOW값에 특정날짜를 넣고 엔터키를 누르면 HIGH값으로 LOW + 3일 이되도록
프로그램을 짰습니다. Default 값으로는 LOW에 현재시스템값.. 그러면 HIGH값으로는 현재날짜 +3일이 될겁니다.
제가 문제가 되는 부분은...
디폴트로 되어 있는 날짜(HIGH) 값을 지우지 않고, LOW 값에 Default 로 되어있는 날짜보다 뒤에 날짜를 넣었을 때,
'하한선이 상한선보다 큽니다.' 라고 자동으로 Input 값을 체크하게 되어서 에러메시지가 나온다는 겁니다.
HIGH 값에 상관없이, 자동으로 INPUT 체크가 되기전에 HIGH값에 LOW 값 + 3 한 값을 넣고 싶은데...
AT SELECTION-SCREEN OUT 구문을 써도 그전에 체크해버리네요...
예를 들면, 위에 화면에서 HIGT값은 그대로 둔상태에서, LOW값에 2008.09.03 이란 값을 넣고 엔터키를 쳤을 때,
HIGH 값으로 2008.09.06이라는 날짜가 들어오도록 하고 싶어요!
방법이 없는건지 알고싶어요 +_+;;;; 고수님들 가능한건지...방법있으면 좀 가르쳐 주세요...Please....부탁드려요
댓글 4
-
대게
2008.08.22 18:10
-
seph
2008.08.22 19:24
답변 감사합니다;;; 하지만, 제가 질문 드릴 부분이 아닌 것 같네요 ^^;;; -
SAP폐인
2008.08.22 21:48
아무래도 intialization은 프로그램 실행시 한 번만 타기때문에 위 문제를 해결하는데 정답은 아닌것 같습니다만.
글 쓰신걸 읽어보니 개인적으로 지금 구현하신 방법에서 +3을 해주기전에 High값이 있으면 삭제하고 값을 덮어씌우면 되지 않을까
합니다만.. 어차피 enter라는 액션이 일어나기 전에는 값을 체크하지 않으니깐요
-
seph
2008.08.22 22:46
저는 AT SELECTION-SCREEN OUT 구문에 넣었는데....
HIGH값을 삭제하기도 전에 FROM , TO 값이 체크되고, 에러가 나서 HIGH 값이 삭제가 되지 않았습니다. ^^;
initialization. 에 아래와 같이 넣으세요~
날짜에 +3 해도 되는데 정확하게 하기위해 Function을 사용해서 날짜를 더하기하고요~
Select-options 값에 Append 해서 넣으면 초기화면에 자동으로 입력되어 나옵니다.
그럼...
DATA : L_CNT TYPE INT1.
S_BUDAT-LOW = SY-DATUM.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
DATE = S_BUDAT-LOW
DAYS = 3'
MONTHS = '00'
SIGNUM = '+'
YEARS = '00'
IMPORTING
CALC_DATE = S_BUDAT-HIGH.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
S_BUDAT-SIGN = 'I'.
S_BUDAT-OPTION = 'BT'.
APPEND S_BUDAT. CLEAR S_BUDAT.