부제 : SAP ABAP ALV 업데이트 헷갈리는 데이터 체인지 이벤트 구문 차이점 정리
안녕하세요, D 입니다.
오늘은 handle_data_changed 와 handle_data_changed_finished 차이,
mc_evt_modified 와 mc_evt_enter 차이점에 대해 정리해보았습니다.
담백하게 본론으로 들어가겠습니다.
handle_data_changed VS handle_data_changed_finished
- 공통점 : 데이터 변경이 있을 때 실행
- 차이점 : 데이터 변경 반영 여부, 실행 시점
handle_data_changed 와 handle_data_changed_finished 는
둘 모두 alv에 데이터 변경이 있을 때 이를 반영하면서 발생하는 이벤트입니다.
alv 화면에 값 변경이 발생하면, 곧바로 인터널테이블에 발영되지 않고
데이터 체인지 이벤트를 타면서 인터널테이블에 반영됩니다.
사용자가 값 변경 → handle_data_changed → 변경 값 반영 → handle_data_changed_finished
순서로 사용자가 입력한 값을 인터널테이블에 반영합니다.
데이터 체인지드는 인터널테이블 변경 값 반영 전에,
데이터 체인지 피니시드는 인터널테이블 변경 값 반영 후에 실행됩니다.
데이터 체인지드는 주로 er_data_changed 를 활용하여 다양한 변경 값을 반영하는데
데이터 체인지 피니시드는 해당 값을 갖고 있지 않습니다.
데이터 체인지드 실행 시점에는 인터널 테이블에 변경 값이 반영되어 있지 않지만
mt_mod_cells, mt_good_cells 등 변경 값에 관한 정보를 담고있는 객체들이 있어
이를 활용하여 효율적인 코딩을 할 수 있습니다.
mc_evt_modified VS mc_evt_enter
- 공통점 : data_changed 이벤트 호출
- 차이점 : 사용자의 어떤 입력 값에 반응하는가
mc_evt_modified 와 mc_evt_enter 는
둘 모두 데이터 변경 후에 handle_data_changed 이벤트를 호출하는 구문입니다.
기본적으로 인터널테이블 값이 변경될 때마다 handle_data_changed 이벤트가 자동적으로 발생하지 않습니다.
데이터 변경 반영을 호출하는 코드가 있어야 handle_data_changed 이벤트가 발생하는데,
이를 호출하는 코드가 register_edit_event 입니다.
register_edit_event 에 엔터(mc_evt_enter)를 넣는가, 모디파이(mc_evt_modified)를 넣는가에 따라
이벤트가 얼마나 빈전히 발생하는지가 달라집니다.
mc_evt_enter 는 값 변경 후 사용자가 엔터를 입력해야지만 발생합니다.
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
값 변경 후에 엔터를 입력하지 않는다면 데이터 체인지 이벤트가 발생하지 않고
변경 값이 인터널테이블에 반영되지도 않습니다.
사용자가 엔터 입력을 안할 것 같다면 아래의 모디파이가 대안이 될 수 있습니다.
mc_evt_modified 는 값 변경 후 사용자가 해당 셀을 벗어나면 발생합니다.
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
엔터를 입력하여 값 셀을 이동해도, 탭을 눌러 셀을 이동해도, 화살표를 눌러 셀을 이동해도
모두 데이터 체인지 이벤트가 발생합니다.
사용자가 값을 입력할 때마다, 바로바로 값 변경을 반영한다는 것은 장점입니다.
다만, 여러 값을 변경하고자 할 때는 값 변경이 발생할 때마다 데이터체인지 이벤트를 호출한다는 단점이 있습니다.
적절한 상황에 알맞는 코드를 취사선택할 수 있는 도움이 되었길 바랍니다.
더 쉬운 설명을 원하시면 아래 블로그 참고 부탁드립니다.
SAP 아밥 ALV 입력값으로 화면 변경 업데이트 하는 방법
오늘의 데일리쌥, D입니다~ 오늘은 ALV 화면을 업데이트 하는 데이터 변경 관련 코드 중 헷갈리는 친구...
blog.naver.com
아래 링크는 참고했던 사이트입니다.
A Twossun Place
Twossun 의 ABAP 지식을 정리하고 공유하는 공간입니다.
twossun.tistory.com
감사합니다.
'SAP > ABAP' 카테고리의 다른 글
ABAP 코드 비교 분석 EXIT CANEL STOP CHECK 차이점 (0) | 2023.09.05 |
---|---|
SAP ABAP Dictionary Table Currency/Quantity Fields 탭 (0) | 2023.07.04 |