I Agree Line Smiley

SAP/ABAP

ALV DATA_CHANGED EVENT 사용하기

지코딩 2023. 3. 8. 17:19

ALV에서 필드값이 변경될때 다른 필드의 값을 설정해주는 이벤트

data_changed 에 대해 적어보겠습니다.

아직 누군가에게 설명할 정도로 깨닫지 못했기 때문에 많은 피드백 부탁드립니다. u(_ _)u

 

1. 이벤트 선언                     

CLASS를 선언하고 data_changed 이벤트 메소드를 선언한다.

SCREENS에 PBO안에 SET HANDLER를 등록한다.

 

또한, ALV에서 데이터를 변경하는 경우에는 register_edit_event 메소드를 호출해서 사용해야한다.

이 메소드를 활용하면 데이터가 변경되는 시 자동 반영하게 할 수 있다.

 

i_event_id 에 mc_evc_modified를 넣어주면 데이터를 입력하면 자동으로 반영하지만 mc_evc_enter를 대신 입력 하면 엔터를 누른 시점에 이벤트를 타게된다.

2. 메소드 구현부                    

 

먼저, lvc_s_modi TYPE의 스트럭쳐와 변경된 필드와 같은 타입의 변수를 선언해준다.

( ls_mod_cells , lv_carrid )

 

1번에서 USING으로 넘겨 준 er_data_changed를 활용하여 방금 선언한 스트럭쳐에 데이터가 변경되는 인덱스 값을 저장한다.

 

그 후, get_cell_value 메소드를 호출하여 변경된 필드의 Value 값을 취득한다.

 

그리고 취득한 Value값을  활용하여 data changed 할 필드의 데이터를 가져온다.

 

마지막으로, modify_cell 메소드를 호출하여 가져온 data changed 데이터를 적용한다.

[ 결과 화면]

[ 결과 화면 ]

3. 다양한 필드 적용                 

만약, 한번에 Data changed 로 여러개의 필드 값을 바꾸고 싶을때는 Perform 안에 USING을 동적을 설정하여 modify_cell을 설정 할 수 있다.

 

예시 ]