쌓고 쌓다
[ABAP] Global Class, Local Class, Class Builder 본문
Class Builder (SE24)
클래스 생성 및 검색이 가능한 T-Code는 SE24이다.
클래스는 Attribute와 Method를 포함한다.
CL_BC400_COMPUTE를 입력하고 Display를 눌러보자.
CL_BC400_COMPUTE 클래스에 포함된
Method 목록과 그 메소드의 Parameter, Exception, Sorcecode를 확인 가능하다.
Level에 Static Method와 Instance Method가 있다.
Static Method는 클래스가 하나만 가지는 메소드를 뜻하며
Instance Method는 클래스에서 생성된 각각의 오브젝트가 갖는 메소드를 뜻한다.
Method의 Exceptions를 누르면 Exception Classes 버튼이 생긴다.
Exception Classes에 체크가 되어있다면
TRY CATCH ENDTRY 구문으로 처리해야한다.
위의 방법을 Class-Based Exception Handling 방법이라고 한다.
체크가 안되어 있다면 sy-subrc로 처리한다.
위의 방법을 Classic Exception Handling이라고 한다.
메소드를 선택하고 해당 버튼(F8)을 누르면 메소드 테스트를 할 수 있다.
클래스 생성
Package 우클릭 => Create => Class Library => Class 순서로 클래스를 생성할 수 있다.
Class Builder에서도 클래스 생성이 가능하다.
클래스명은 ZCL_ 또는 YCL_로 시작한다.
생성된 클래스를 더블 클릭하여 메소드 작성, 파라미터, 예외, 소스코드 작성이 가능하다.
메소드의 소스코드 탭에 들어가 Signature를 누르면
해당 메소드의 파라미터를 표시하는 창을 킬 수 있다.
global class static 메소드 호출 방법
사용할 메소드를 드래그 앤 드롭
또는
Pattern을 누르고
ABAP Objects Patterns를 누른다.
Call Method 부분에 Class명과 Method명을 입력한다.
Global Class의 Instance Method 호출 방법
static Method는 CALL METHOD 클래스명=>함수명 이렇게 호출하지만
instance method는
DATA ref1 TYPE REF TO myclass.
CREATE OBJECT ref1 ...
EXPORTING ...
과정을 거쳐야 한다.
Local Class
Global Class는 Class Builder(SE24)로 생성되어 사용이 가능한 클래스라면
Local Class는 ABAP Program 내에 생성된 클래스이다.
로컬 클래스명은 lcl_로 시작한다.
Local Class의 메소드를 사용할때
드래그 앤 드롭, Pattern을 사용하여 호출할 수 없다.
Ctrl + Space만 사용하여 호출이 가능하다.
Local Class 생성
Local Class의 생성은 정의와 구현으로 나눠진다.
정의 (DEFINITION)
* Local Class 정의.
CLASS lcl_compute DEFINITION.
PUBLIC SECTION.
CLASS-METHODS get_percentage
IMPORTING iv_act TYPE i
iv_max TYPE i
EXPORTING ev_percentage TYPE bc400_perc
EXCEPTIONS division_by_zero.
ENDCLASS.
DEFINITION 키워드로 정의 부분을 작성한다.
SECTION은 범위가 넓은게 먼저 와야한다.
그래서 PUBLIC SECTION이 먼저 오고, PRIVATE SECTION이 와야 한다.
EXCEPTIONS를 통해 발생할 예외를 정의할 수 있다.
구현 (IMPLEMENTATION)
* Local Class Method 구현.
CLASS lcl_compute IMPLEMENTATION.
METHOD get_percentage.
IF iv_max = 0.
RAISE division_by_zero.
ELSE.
ev_percentage = iv_act / iv_max * 100.
ENDIF.
ENDMETHOD.
ENDCLASS.
IMPLEMENTATION 키워드로 구현 부분을 작성한다.
RAISE 키워드로 DEFINITION에서 정의한 예외를 발생 시킬 수 있다.
Local Class 호출
CALL METHOD lcl_compute=>get_percentage
EXPORTING
iv_act = pa_act
iv_max = pa_max
IMPORTING
ev_percentage = gv_percentage
EXCEPTIONS
division_by_zero = 1
OTHERS = 2.
IF sy-subrc <> 0.
WRITE 'ERROR'.
ELSE.
WRITE: 'Percentage : ', gv_percentage.
ENDIF.
위에서 언급했듯이 드래그 앤 드롭이나 Pattern으로 호출할 수 없다.
Ctrl + Space로 Local Class의 메소드를 호출해야한다.
'SAP > ABAP' 카테고리의 다른 글
[ABAP] Local Table Type, Internal Table 선언과 정의 (0) | 2025.01.08 |
---|---|
[ABAP] Local Structure 선언, ABAP Dictionary (0) | 2025.01.07 |