유지보수 뷰 생성 후, 유지보수 다이얼로그 (Table Maintenance Dialog) 생성하여 이벤트 생성시에,
이벤트에 로직을 입력 후 활성(active)하면 다음과 같은 에러가 뜨는 경우가 있다.
- Statement is not accessible.
- Incorrect nesting: Before the statement "+END-OF-INCLUDE", the control
structure introduced by "SELECT" must be closed by "ENDSELECT".
특히 두번째 에러는 로직 내에 select문이 들어가서 뜨는 에러인것 같은데,
이 에러를 보면 내가 select문을 잘못짜서 그런가? select문 끝에 endselect 구문을 써줘야 하나? 싶은 생각이 든다.
그부분이 문제가 아니고
Statement is not accessible.' 오류의 원인은 form ~ endform 구문을 써주지 않아서 그렇다.
report프로그램 생성할때 프로그램 내에 서브루틴을 만들어주면 자동으로 몇줄의 주석과 함께 form~ endform 구문이 생기는데 이벤트를 생성할때는 이 구문이 자동으로 생기지 않아서 내가 적어줘야한다.
이 오류가 떴을 때 일단 현재 로직을 짜둔 위치가 어디인지 파악해두고[LZGF0001F01인클루드]
F3(back)버튼을 눌러서 뒤로가기를 해보면,
내가 이벤트를 생성할때 perform문 이름을 [EVENT_21]로 준 것을 확인할 수 있다.
그리고 편집기 버튼을 누르면 PERFORM문을 새로 생성할거니까 어디에 저장할건지 선택하라는 창이 뜬다.
(아까 로직을 짜두었던 [LZGF0001F01인클루드]에는 form~ endform 구문을 써놓지 않아서 해당 퍼폼문이 만들어지지 않은것으로 인식됨)
일단 새로 생성을 하면 [인클루드 LZGF0001F02]가 신규 생성된다.
이제 표시한 버튼을 순서대로 눌러 현재 위치인 [인클루드 LZGF0001F01]에서 이전에 짜둔 로직인 있는 [인클루드 LZGF0001F02]로 이동!
그리고 [FORM EVENT_21. ~ ENDFORM.]구문을 추가해주고 활성(ACTIVE)하면 다른 문제가 없으면 정상적으로 된다.!
그리고 불필요하게 만들어진 인클루드는 지워준다.
삭제 누르면 아래 창이 뜨는데 [예]누르면 된다.
이제 다시 이벤트 추가 화면에서 편집기 눌러서 들어가보면 아까 PERFORM문으로 잘 들어가지는것을 확인할 수 있다.