SAP/ABAP

ABAP Class ALV Checkbox 변경시 Data Changed Event 실행

그녀는애교쟁이 2014. 12. 15. 11:00
반응형

Class ALV 에서 데이터를 수정하면 ALV 에 설정되어 있는 Data Changed Event 가 실행되게 된다. 그런데 개발을 하다 보니 Checkbox 의 경우 기본적으로 Data Changed Event 를 타지 않아서 변경된 내용을 체크 할 수 없었다. ( 다른 필드를 수정하면 변경된 내용을 알 수 있으니 그냥 처리해도 된다. ) 그래서 왜 그런가 찾아봤더니 ALV  Data Changed Event 의 경우에 1) 데이터가 변경되는 즉시 2) 데이터를 변경하고 엔터 키를 입력시 두 가지로 이벤트 발생을 조정할 수 있다.


그렇기 때문에 Checkbox 의 값이 변경된 경우 바로 Data Changed Evnet 를 실행하게 한다면 변경된 내용을 바로 사용 할 수 있다. 그리고 데이터가 변경 되자마자 Event 를 실행하게 설정을 한다면 Row 의 추가 삭제가 좀 더 용이하게 처리가 가능하다. 엔터를 기본을 해 놓으면 추가 또는 삭제가 되어도 이벤트가 실행되지 않는 경우가 있다.


참고자료 : http://scn.sap.com/thread/2009818


  SET HANDLER :
      GO_EVENT_RECEIVER_0100->HANDLE_DATA_CHANGED FOR GO_GRID.
*     GO_EVENT_RECEIVER_0100->HANDLE_BUTTON_CLICK FOR GO_GRID,
*     GO_EVENT_RECEIVER_0100->HANDLE_DOUBLE_CLICK FOR GO_GRID.
*     GO_EVENT_RECEIVER_0100->ON_F4 FOR GO_GRID.

  " 데이터 변경시 DATA CHANGED 이벤트 호출
  CALL METHOD GO_GRID->REGISTER_EDIT_EVENT
    EXPORTING
      I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.

*  " 데이터 변경후 ENTER 입력시  DATA CHANGED 이벤트 호출
*  CALL METHOD GO_GRID->REGISTER_EDIT_EVENT
*    EXPORTING
*      I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.




위의 이벤트 옵션을 설정하고 체크박스를 체크하면 아래와 같이 Data Changed Event 가 실행된다.



Data Changed Event 가 실행되었다. 파라메터에 변경된 데이터 Row 와 변경된 데이터가 들어 있다.



MP_MOD_ROWS 에 1건의 변경된 데이터가 들어 있다.



변경된 필드의 이름과 Value 값이 저장되어 있다.