[ABAP] 클래스(Class), Method for event, DOUBLE CLICK

홍예림·2023년 8월 1일
0

SAP ABAP(개편중...)

목록 보기
43/55
post-thumbnail
post-custom-banner

들여다보기

  • 상속성, 캡슐화, 다형성
  • SE24 에서 클래스 생성, 관리 가능

구조

  1. 정의 Definition
  2. 구현 Implementation

이벤트

클래스의 인스턴스 보기

  1. Class Builder(SE24)에서 클래스를 검색한다
    • 스탠다드 클래스만 검색 가능 (내가 생성한 클래스는 검색 불가)
  2. Events탭 - Filter 체크
    : 사용 가능한 이벤트 목록(= 인스턴스)을 확인할 수 있다.
  3. 이벤트 셀을 클릭하고 Parameters버튼을 클릭
    : 해당 이벤트에서 사용할 수 있는 파라메터와 그 타입을 확인할 수 있다.

클래스

생성

순서

  1. 프로그램에서 Create - Class 경로로 들어가 클래스의 Definition, Implementation 둘 다 Include-C (Local Class)파일에 생성한다.
  2. Include-C 파일에서 클래스 구조 작성
    • CLASS(Definition)
      • PUBLIC SECTION, 메서드 이름
    • CLASS(Implementation)
      • METHODS: < method 명> FOR EVENT < event명 > of < class >
      • 동작할 메서드의 로직, PERFORM 문으로 로직을 분리해 작성한다.
      • subtotal 등 가상의 행을 클릭 시 에러 발생 방지를 위한 데이터검증문(sy-subrc) 필요
  3. Include-TOP 파일에서 프로그램에 이벤트 적용
    • 프로그램에 클래스 선언 CLASS <클래스명> DEFINITION DEFERRED.
    • 이벤트 변수 선언 gcl_handler TYPE REF TO lcl_event_handler,
  4. 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 문으로 로직을 분리한다.

메서드 동작 로직 (FORM문)

  • 위 예시는 특정 컬럼의 셀을 더블클릭 했을 때 안내창이 뜨는 로직이다.
  • USING에서 받는 파라메터의 타입은 CLASS(Definition)에서 선언한 이벤트 메서드의 파라메터에서 확인한다.
  • SUM, SUBTOTAL 등으로 생성된 가상의 행을 선택했을 때 에러가 발생하는 경우를 방지하기 위해 데이터검증 조건문을 추가한다.
    IF sy-subrc <> 0.
     EXIT.
    ENDIF.

3. 프로그램에 이벤트(인스턴스) 선언

4. ALV에 이벤트 적용


완성

profile
SYNC 3기 5반 2023.07 - 2023.12
post-custom-banner

0개의 댓글