반응형

이번에 소개할 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
반응형

 

CL_GUI_ALV_GRID인 클래스 인데, T-code: SE24에 들어가서 해당 클래스 검색해보면

 

다음과 같은 항목이 보일텐데 Event 탭에 들어가서 어떠한 Event Handler가 있는지 확인 할 수 있다.

CL_GUI_ALV_GRID의 Events 탭

 

이중에서 가장 많이 사용되고 알아두면 좋을만한 것들에 대해서 알아보자.

 

1. ALV를 구성할 때 작동하는 Event인 Toolbar에 대해서 알아보자.

 

ALV 화면

 

Toolbar는 ALV에 대해서 작동하는 toolbar 버튼을 구성해주는 Event Handler라고 보면 된다.

 

버튼을 구성하면 빨간박스 위치에 생성된다.

 

사용하는 방법은 다음과 같다.

 

하기와 같이 로컬 클래스 이벤트 핸들러를 정의해주고 로컬 클래스에 대해 생성자를 만들어 준 후 

 

내가 원하는 이벤트 핸들러를 하나씩 추가하면 된다.

Local Class 선언

로컬 클래스를 작성한 이후에 해당 클래스를 New구문을 통해 생성해주고,

 

해당 ALV Gird에 event modified 변수를 넘겨줘서 edit_event에 등록을 시켜주고 

 

작성한 handle_toolbar를 set handler에 설정해주면 이벤트가 동작한다.

 

Local Class 생성 후 ALV에 적용

 

handle_toolbar에 break-point를 찍어서 돌려보면 화면이 생성되는 시점에서 이벤트 트리거가 발생한다.

 

handle_toolbar에 있는 alv_handle_toolbar 퍼폼문을 다음과 같이 작성하면 된다.

Buttone 생성 로직

 

function 명 , Icon여부, button명 등 설정을 해주고 실행하면 

 

아래 그림과 같이 ALV 버튼이 생성된다.

ALV에 Button 추가

 

버튼을 생성했으면 해당 버튼에 대한 기능을 추가해줘야 하는데 이 이벤트는

반응형

USER_COMMAND 이벤트 핸들러를 사용하면 작동 시킬 수 있다.

Local Class에 handle_user_command Method 정의

 

handle_command 로직을 추가하고 핸들러도 추가해주고

생성한 Method를 ALV에 Set handler

 

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

 

해당 function은 위에 toolbar를 구성할 떄 작성해 두었던 function명을 입력해주면 해당 로직을 타게된다.

hanlde_user_command 퍼폼문 로직

 

 

반응형

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

[ABAP] Pass by Value vs Pass by Reference  (1) 2024.06.16
[ABAP] ALV Grid Event Handler - 2편  (0) 2024.06.11
[ABAP] ALV Class - Method 1편  (1) 2024.06.04
[ABAP] Search Help 초기 필드값 세팅  (0) 2024.05.28
[ABAP] Table 생성  (0) 2024.05.25

+ Recent posts