질문드릴깨요..
클래스 ALV에서보면 매 ROW마다 맨앞에 상자를 클릭할수 있잖아요..
정확한 명칭은 모르겠지만 ROW_MARK라고 하고 아무튼 그걸 눌렀을때
타는 이벤트명을 좀 알고 싶습니다.
참조한 클래스는
CL_GUI_ALV_GRID 를 사용했구요.
제가 이벤트명
TOTAL_CLICK_ROW_COL 있어서 METHOD선언할려고 했는데..
해당 이벤트가 PROTECTED이벤트라는 메서지를 뿌려주면서 컴파일도 안되네요 -_-.
댓글 6
-
안규
2009.08.14 00:01
-
예스맨
2009.08.14 00:43
안규님 답변 감사하구요.
그러나 제가 원하는건 해당 라인의 index를 가저오는 메소드를 원하는게 아니라..
row_mark를 클릭하는 순간에 이벤트를 발생시키게 하고 싶거든요..
클래스 CL_GUI_ALV_GRID 의 이벤트중 on_click_row_col 이라는 이벤트가 있더군요..
저 이벤트을 이용해서 메소드 선언부분에 이렇게 선언하려고 하거든요
CLASS LCL_EVENT_RECEIVER DEFINITION.
METHODS : on_click_row_col
FOR EVENT click_row_col OF cl_gui_alv_grid
IMPORTING row_id
col_id.
ENDCLASS .
그런데 컴파일시에 에러가 뜨네요..
'ACCESS TO PROTEDED EVENT "CLICK_ROW_COL" IS NOT ALLOWED' 라는 메세지가 나오면서 컴파일자체도 안되네요.
만약 컴파일이 되면
SET HANDLER EVENT_RECEIVER->ON_CLICK_ROW_COL FOR GRID1.
선언하면 ROW_MARK를 클릭시 해당 이벤트를 탈거라고 생각했는데.
뭐가 문제일까요?
방법이 없을까요?
제가 원하는건 ROW_MARK를 클릭 하는 순간에 어떤로직을 수행시키고 싶어서 입니다..
-
예스맨
2009.08.14 03:42
sdn 싸이트를 뒤져 봤는데도 명쾌한 해답이 없네요 -_- .
정 안되면
HOTSPOT_CLICK 이란 이벤트를 대신 사용해야 할 거 같네요. -
슈퍼맨아들
2009.08.14 18:16
DATA_CHANGED 로 처리해야 될것 같네요..
ON_CLICK_ROW_COL에 대해서는 찾아보지는 않았습니다..
-
슈퍼맨아들
2009.08.14 18:20
하나 빼먹었는데.. ROW_MARK 옆에 CHECKBOX를 하나 만들어서 CHECK를 할경우
DATA_CHANGED 를 먹게 만드시면 되겠네요..
-
예스맨
2009.08.14 19:28
수퍼맨아들님 답변 감사합니다.
체크박스하나 만들어서 data_changed 이벤트를 사용하는거 아니면 그냥 체크박스 사용하지 않고 hotspot_click 이벤트를
이용하는거 둘중에 하나 택일 해야 겠네요..
레이아웃에 sel_mod 가 선언되어 있다면 get_selected_rows 메소드를 이용하여
선택한 라인의 인덱스 값을 불러올 수 있습니다.
예를 들면 어떤 버튼을 선택하였을 때 선택라인의 인덱스 값은 gt_row_no[] 에 들어 있게 되는거죠...
CALL METHOD gcl_alv->get_selected_rows
IMPORTING
et_index_rows = gt_row_no[].