안녕하세요
아직 초보 개발자라서 초보스런 질문이라도 답변 좀 부탁드릴께여~
지금 CBO테이블에서 조건에 맞는 데이터를 인터널 테이블에 가지고 와서 ALV GRID로 그 데이터들을 화면에 보여주는데
인터널 테이블에 데이터가 적으면 문제가 안되는데 데이터가 많으면 ALV GRID에서
스크롤을 내릴 때 Refresh같이 화면에 다시 뿌려지는것 처럼 보이는데
실행시에 몇건의 데이터를 조회했다는 메세지나 특정 메세지를 뿌리고 난후에 스크롤을 내리면
그 메세지가 계속해서 나오는 것처럼 보이기 때문에 메세지는 한번만 보여주게 해달라고 요청이 와서
수정하다가 방법을 못찾아서 이렇게 글을 올립니다.
디버깅을 해봐도 현제 시스템 User-command 에는 %_GS 0 1 이런 값이 들어와있고 어떠한 동작도 하지않는데
왜 그렇게 되는지 궁금해서요~
1. 스크롤을 내릴 때마다 특정 데이터 라인에서 다시 화면에 뿌려지는 현상이 잇는데 이현상이 무슨 기능인지
설명좀 부탁드립니다.
2. 처음 프로그램을 실행할 때 만약에 메세지를 뿌리게 되면 데이터가 많을 때 스크롤을 내려도 메시지는 한번만
보이고 다시 안보이게 할 수있는 방법이 있는지 알려주세요 답변 부탁드립니다~~
감사합니다
댓글 7
-
요요
2010.01.23 02:15
-
래피드
2010.01.23 03:02
스크린 상에서 ALV를 생성할 때 조건으로 그리드, 컨테이너가 빈 경우에만 생성되도록 되있고
이벤트의 경우에는 이벤트 Receiver가 빈경우에만 핸들러를 setting 하게 되있기 때문에 계속해서 뿌리지는 않습니다.
다만... GRID가 보여지는 화면에서 디버깅을 걸고 스크롤을 내리면 자동으로 이벤트가 발생되서 디버깅이 걸리는데
저 이벤트를 어디서 발생시키는지를 모르겠네여..ㅠ.ㅠ
-
activeman
2010.01.25 18:32
스크롤을 내릴때마다 메시지가 뿌려지는것 보니 clear: sy-ucomm 을 하셔야 합니다.
user-command 처리하는 부분에 break-point 를 설정해 놓고 테스트 해보시면 전에 적용되었던 user-command가 스크롤
내릴때마다 적용되는걸 볼 수 있을 겁니다.
그래서 보통 sy-ucomm 과 같은 type의 변수를 하나 선언하시고 이 변수를 가지고 case문 처리하고 clear 변수를 해서
스크롤할때마다 user-command가 적용되는걸 방지 하시면 될겁니다.
즐밥하세요.
-
래피드
2010.01.25 21:36
ALV 구성을 어떻게 하느냐에 따라 틀릴수도 있지만 저의 문제 같은 경우에는 어떠한 작업을 처리하면 ok_code변수에 값이 들어오고
그 값을 다시 같은 타입의 임의의 변수에 담고 ok_code는 클리어 시키는 방식으로 되있는데 어떠한 동작을 처리하고 나서 다시
ALV화면으로 돌아왔을 때 스크롤을 내리면 그전 ok_code값이 들어오는 것이 아니고 %_GS 0 1이 값이 들어오더라구요.
이건 function & Class ALV에서 다 테스트 해봤는데 저렇게 들어오더라고요... Standard에서 데이터가 많을 때 그냥 발생시키는 이벤트인지 ... 아니면 따로 설정하는게 있는지 .. 못찾겠네여..
-
낙천
2010.01.27 02:10
메세지 뿌리는 위치는 어디인가요~
-
래피드
2010.01.27 04:54
메세지 뿌리는 위치는 Function Alv 같은 경우,
REUSE_ALV_GRID_DISPLAY 바로 전에 Describe Table 해서 라인수 읽어와서
화면에 뿌리도록 되있구여 클래스 같은 경우에는 grid->
set_table_for_first_display 하고 나서
화면에 엔트리수 메세지를 보여주도록 되있습니다 .
-
래피드
2010.01.30 22:10
다들 바쁘신데 답변해주셔서 감사합니다 소랑님 말처럼 메세지를 뿌릴 때 display like 'I'를 써서 아이콘을 없앤 상태의
메세지는 리프레쉬 되는것 처럼 보이지 않아서 이정도로 해결할 수 있을거같아여.
근데 만약에 이같은 경우에는 에러메세지인지 정상메세지인지 구분이 안되서 한계는
있겠네여 흠.. 아무튼 이 방법을 응용해 보면 될거같아여~~
감사합니다 ~
프로그램을 확인해보면 알겠지만,
그냥 제 느낌으로는 계속해서 alv 를 뿌리시는 것 같아요.
또는 이벤트 클리어가 안되서 뭔가 반복 실행되는 것 같기도 하구요.
현상만으로 판단하기가 좀 힘들군요. ㅠㅠ