반응형

이번에 소개할 Event Handler는 DATA_CHANGED다. 

 

이것은 ALV가 수정모드일 때 데이터가 변경되면 감지해서 이벤트가 발생하게 하는 핸들러다.

 

로컬 이벤트 핸들러 클래스에 data_changed 이벤트를 구성해주고

Local Class에 Handle_data_changed Method 정의

1편에서 했던 방법과 똑같이 Set Handler에 handle_data_changed를 설정해주고 해당 구문에 

 

Break-point를 줘서 ALV의 값을 변경해보자.

 

빈값이 었던 4번째 라인에 로컬 클래스를 KRW를 입력하고 엔터를 치면 해당 클래스에 디버깅이 타게된다.

ALV에서 Currency 필드에 KRW입력하고 엔터

 

해당 이벤트를 타는 것을 알 수 있다.

 

이후에 PERFORM문에 로직을 작성하면 된다.

Handle_data_changed Method 타는 것을 확인

 

로직을 작성할때는 er_data_changed 오브젝트에 들어가보며 mt_mod_cells항목이 있는데 

 

그 항목이 수정되어있는 라인들의 정보다.

 

LOOP AT po_data_changed->mt_mod_cells INTO ls_mod_cells. 

PO_DATA_CHANGED->MT_MOD_CELLS에 변경된 라인들 정보가 들어온다.

 

수정한 라인의 위치 값 정보를 가지고 로직을 작성 할 수 있다.

 

다음은 DOBBLE_CLICK 이벤트와 HOTSPOT CLICK 이벤트 가 있는데 두 기능은 비슷하다.

 

더블클릭은 말그대로 더블클릭했을 때 이벤트가 발생하는거고 핫스팟 클릭은 한번 클릭했을 때 이벤트가 발생하는

 

이벤트 핸들러라고 생각하면 이해가 쉽다.

Local Class에 Hotspot 및 Double Click Method 정의

 

더블클릭과 핫스팟 클릭을 구성하고 Set Hanlder까지 구성 후 ALV 실행해서 ALV필드를 클릭해보겠습니다.

 

더블클릭하면 디버깅이 다편서 몇번째 라인, 어떤 필드를 선택해서 더블클릭했는지 정보를 받아오면서 

 

이벤트 트리거가 발생합니다.

Double Click Method 실행
Double 클릭 로직 실행 시 변수 값 확인

하지만, 한번 클릭하는  hot spot click은 이벤트 트리거를 안타는데

 

핫스팟을 설정하려면 다음과 같은 설정이 추가로 필요합니다.

 

필드카달로그 구성하는 곳에서 원하는 필드에 hotspot 설정을 다음과 같이 해줘야합니다.

FLDATE 필드에 Hotspot 설정

 

Flight Date에 핫스팟 설정을 해주고 ALV를 실행해보면 

 

해당 필드값에 밑줄이 생기면서 핫스팟 대상임을 표시해 준다.

Flight Date 필드에 Hotspot 표시인 밑줄이 생긴다.

 

밑줄이 있는 필드에 한번 클릭을 하게되면 Hotspot 이벤트 트리거가 발생하면서 

 

해당 로우와 컬럼의 정보를 받아오는 것을 알 수 있습니다.

 

Hotspot Click Event 로직 실행
Hotspot 로직 실행 시 변수 값 확인

 

위 화면의 정보를 가지고 로직을 작성하면 된다.

반응형

'SAP > ABAP' 카테고리의 다른 글

[ABAP] SELECT WITH 구문  (0) 2024.06.24
[ABAP] Pass by Value vs Pass by Reference  (1) 2024.06.16
[ABAP] ALV Grid Event Handler - 1편  (0) 2024.06.10
[ABAP] ALV Class - Method 1편  (1) 2024.06.04
[ABAP] Search Help 초기 필드값 세팅  (0) 2024.05.28

+ Recent posts