범위값을 주로 체크할때 사용하는 걸로 알고 있는데요
TABLES : SFLIGHT.
* carrid와 connid를 담는 itab테이블 선언 *
DATA : BEGIN OF ITAB OCCURS 0.
DATA : CARRID TYPE SFLIGHT-CARRID,
CONNID TYPE SFLIGHT-CONNID.
DATA : END OF ITAB.
* select-options를 통해 두 변수를 입력받는다 *
SELECT-OPTIONS : S_CARRID FOR SFLIGHT-CARRID,
S_CONNID FOR SFLIGHT-CONNID.
* 만약에 s_connid의 low값을 입력 안했을경우에 이 이벤트가 발생??? *
AT SELECTION-SCREEN ON END OF S_CONNID.
LOOP AT S_CONNID.
IF S_CONNID-LOW IS INITIAL.
MESSAGE E000 WITH 'ERROR!'.
ENDIF.
ENDLOOP.
START-OF-SELECTION.
SELECT CARRID CONNID INTO TABLE ITAB
FROM SFLIGHT
WHERE CARRID IN S_CARRID
AND CONNID IN S_CONNID.
DELETE ADJACENT DUPLICATES FROM ITAB.
LOOP AT ITAB.
WRITE : / ITAB-CARRID,' | ', ITAB-CONNID.
ENDLOOP.
색칠되어있는부분처럼 저런 용도로 end of sel이벤트를 사용하나요??
정확한 사용처를 알려주세요..^^;
아~그리고 sorted table을 정의할때 unique key로 지정한 필드에 중복되는 값을 append시켰을 때 dump가 발생하잖아요
원래가 덤프가 발생하는건가요??
AT SELECTION-SCREEN ON END OF S_CONNID.
말그대로 선택화면(SELECTION-SCREEN)에서 S_CONNID의 끝에 왔을때 실행되는 프로세스입니다.
S_CONNID가 from ~to 로 설정되어 있으므로 S_CONNID 값의 끝에서 아래 루틴을 타게 됩니다..
그내용은 S_CONNID-LOW 값이 없으면 에러메시지를 띄워 주는 로직 이구요..
다시 말씀드리면 S_CONNID-LOW값을 입력 안했을때 발생하는 이벤트가 아니라 S_CONNID의 마지막에
실행되는 프로세스 입니다.