CALL METHOD g_grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
엔터를 쳤을때 어떤로직을 수행하기위해 저렇게 사용했는데요!!
i_event_id 여기 에 19가 들어가는 데 이걸 어떻게 사용해야 할까요!!
저는 엔터를쳐서 어떤 두필드의 값을 곱해 활성화 안된곳에 넣어주려고하는데요!!
자세한조언 부탁드려요!!
댓글 6
-
activeman
2008.04.15 21:08
-
genius
2008.04.15 21:30
activeman님 제가 data_changed 메소드를 써었는데요 그거로인해 값을 입력할때마다
메소드를타서 커서도 처음으로 돌아가고
ex) 첫필드입력후 tab키나 마우스로 옮겨서 다음필드를 입력하려고할때마다 데이터가 바뀌니까 메소드를타서
다시커서가 처음으로돌아가 입력하기가 불편해서요!!
register_edit_event 이 이벤트사용시 엔터를치면 디버깅은 걸리는데 어디를타는지 알수없내요 이상한데로 들어가버려서요!!
결론은 data_changed 메소드를 안쓰고 두필드의값을 곱해 한필드에 넣어주고 싶은데...
제가 이해할수없는 말을하는건 아닌지 모르겠네요^^;
data_changed 메소드를썼을땐 되긴됐었어요^^;
-
genius
2008.04.15 22:47
activeman님!!
CLASS의 IMPLEMENTATION 부분의
METHOD HANDLE_DATA_CHANGED.
ENDMETHOD. "handle_DATA_CHANGED
여기에 서 로직을 넣어주면 될것같아 넣고 디버깅 걸어보니
인터널테이블에 데이터가 담겨있어 loop돌려서 헤더로올려서 값을곱해 modify 시켜주니 그값은들어가는데요
loop을 돌리니까 커서가 앞으로 와버리네요 짐 빼보니깐 앞으로안오네요!!
제가 모르는게 넘 많은것같아요!!
나름 그냥 만들어보는것인데요 현재 재가하고있는것의 상태는 alv화면에 데이터가 하나도 없는 상태에서
toolbar메소드로 만든버튼(신규)을 누르면 첫 한라인이 생성되고 거기에 최초로 데이터를 입력하게 되는것있데
그래서 인터널테이블에 이미 한칸이 append되어있을것이고 그것을 끄집어내서 값을곱해넣어주려구 loop을돌린건데
loop때문에 한칸한칸 입력시마다 커서가 가버리게되네요!!ㅜ.ㅜ
-
정대경
2008.04.16 02:37
cl_gui_alv_grid=>mc_evt_enter를 더블클릭하면 초기값이 19라는 것을 알 수 있을 것입니다.
이것은 클래스 맴버로서 클래스 레벨에서 초기화한 값입니다.
일반적인 프로그램에서 상수와 비슷한 기능을 한다고 생각하면 됩니다.
그것을 register_edit_event 메소드의 i_event_id 파라메터에 넣어주는 것이구요
-
초보아밥퍼
2008.04.17 21:58
CALL METHOD g_grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
이 이벤트는 따로 정의를 안내려도 정형화된 메소드 입니다.
OK_CODE 에 ENTER를 치게되면 *** ****** 19 <-- 데이터값이 나옵니다.
이것이 ENTER를 사용했다는 것으로 보시고 로직 짜시면 될껍니다.
아닌가? ㅋㅋ
-
CoolGuy
2008.04.17 23:58
아닌데요 ㅡ.,ㅡ;
CLASS의 IMPLEMENTATION 부분의
METHOD HANDLE_DATA_CHANGED.
ENDMETHOD. "handle_DATA_CHANGED
이부분에 값을 곱하는 루틴을 넣어 주는 것은 어떨까요..
엔터키를 치면 데이터 변경된 부분은 HANDLE_DATA_CHANGED 메소드를 타게 되어 있습니다.
참고하세요.