들여다보기
- 상속성, 캡슐화, 다형성
- SE24 에서 클래스 생성, 관리 가능
구조
- 정의
Definition
- 구현
Implementation
이벤트
클래스의 인스턴스 보기
- Class Builder(SE24)에서 클래스를 검색한다
- 스탠다드 클래스만 검색 가능 (내가 생성한 클래스는 검색 불가)
Events
탭 - Filter
체크
: 사용 가능한 이벤트 목록(= 인스턴스)을 확인할 수 있다.
- 이벤트 셀을 클릭하고
Parameters
버튼을 클릭
: 해당 이벤트에서 사용할 수 있는 파라메터와 그 타입을 확인할 수 있다.
클래스
생성
순서
- 프로그램에서 Create - Class 경로로 들어가 클래스의
Definition
, Implementation
둘 다 Include-C (Local Class)파일에 생성한다.
- Include-C 파일에서 클래스 구조 작성
CLASS(Definition)
CLASS(Implementation)
METHODS: < method 명> FOR EVENT < event명 > of < class >
- 동작할 메서드의 로직, PERFORM 문으로 로직을 분리해 작성한다.
- subtotal 등 가상의 행을 클릭 시 에러 발생 방지를 위한 데이터검증문(sy-subrc) 필요
- Include-TOP 파일에서 프로그램에 이벤트 적용
- 프로그램에 클래스 선언
CLASS <클래스명> DEFINITION DEFERRED.
- 이벤트 변수 선언
gcl_handler TYPE REF TO lcl_event_handler,
- display_screen(Include-F 파일)에서 스크린에 클래스 적용
- 새로운 이벤트 추가 시, ALV 관련은 이 단계부터 작성한다.
- 그리드에 생성
CREATE OBJECT gcl_handler.
- 타 스크린에서 생성되어 넘어오는 경우가 있으므로
IF gcl_handler IS NOT BOUND.
조건문이 필요하다.
- 그리드에서 사용가능선언
SET HANDLER : gcl_handler->handle_double_click FOR gcl_grid.
1. 프로그램 트리에 클래스 파일 생성
Definition
, Implementation
둘 다 동일한 이름 lcl_enevt_handler
으로 Include-C 파일에 생성한다.
2. 클래스 Definition, Implementation 작성
CLASS(Definition)
METHODS : <" method 명> FOR EVENT <" event명 > of <" class >
EXPORTING
<parameter>
<parameter>.
- 클래스 타입, 클래스 이름 선언
- 사용할 이벤트 설정
- 사용할 이벤트는 지정한 부모클래스에 존재하는 것만 가능하다.
CLASS(Implementation)
- 클래스 안에서 작동할 메서드의 로직 작성
- 정의(Definition) 로직에서 선언된 메서드의 이벤트만 사용할 수 있다.
- Definition에서 IMPORTING에 작성한 파라메터가 전달되어 존재하고 있음을 주의한다.
- PERFORM 문으로 로직을 분리한다.
3. 프로그램에 이벤트(인스턴스) 선언
4. ALV에 이벤트 적용
완성