SAP ABAP에서는 Application Toolbar (화면 상단 버튼)와 ALV Toolbar (ALV 그리드 내부 버튼)를 구분하여 이벤트를 처리합니다.
이유는 다음과 같습니다:
UI 주체가 다르기 때문
처리 위치가 다름
MODULE user_command_**** INPUTCL_GUI_ALV_GRID의 이벤트 핸들러역할이 명확히 분리됨
PAI MODULEMODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'EXEC'.
" 실행 버튼 처리
WHEN 'EXIT'.
" 종료 처리
ENDCASE.
ENDMODULE.
CL_GUI_ALV_GRID 또는 REUSE_ALV_GRID_DISPLAY 사용 시CL_GUI_ALV_GRID 컨트롤 (ALV 전용)CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS: handle_user_command FOR EVENT user_command OF cl_gui_alv_grid.
ENDCLASS.
METHOD lcl_event_handler=>handle_user_command.
CASE e_ucomm.
WHEN 'MY_BTN'.
" ALV 버튼 클릭 처리
ENDCASE.
ENDMETHOD.
| 항목 | Application Toolbar | ALV Toolbar |
|---|---|---|
| UI 주체 | SAP 화면 (Dynpro) | ALV Grid 컨트롤 |
| 버튼 위치 | 화면 상단 | ALV 내부 |
| 정의 방식 | PF-STATUS | ALV 메서드로 추가 |
| 이벤트 처리 위치 | PAI MODULE | ALV 이벤트 핸들러 |
| 주 용도 | 전체 화면 제어 (조회, 저장 등) | ALV 동작 제어 (필터, 선택 등) |
예시:
- 전체 조회, 저장, 종료 등은 Application Toolbar
- ALV 필터, 선택 처리, 엑셀 다운로드 등은 ALV Toolbar
Application Toolbar와 ALV Toolbar는 UI의 주체가 다르고 역할도 다르기 때문에 이벤트를 분리해서 처리합니다.
이는 유지보수성과 기능 명확성을 위한 SAP의 설계 방식입니다.