반응형

 

Class 내부에 Method를 만들어보고 Attribute와 Method의 Parameter가 어떠한 차이가 있는지 확인.

 

클래스 생성 화면

 

 클래스 생성에서 Attribute에 Method Variable인 MV_NUM를 Static Attribute / Public 을 설정해서 저장

 

Level 이란 클래스가 해당 요소를 사용하기 위한 주체가 될 수 있는지 결정

Level 설정 하는 화면

 

Level에는 Instance Atrribute와 Static Attribute그리고 Constant 값을 가질 수 있다.

 

1. Instace Atrribute : 클래스를 이용하여 인스턴스화한 객체마다 부여되는 속성으로 보면된다.

 

2. Static Attribute : 클래스 자체 속성으로 클래스를 이용하여 인스턴스화한 객체에 상속되는 속성.

                                 즉, 해당 클래스로 인스턴스화된 객체들은 Static 속성의 값이 같다.

 

3. Constant : 특정 변수를 고정시켜서 그 값을 사용할 수 있다. (Attribute 에만 존재하고 Method는 존재하지 않음)

 

Visibility 설정 하는 화면

 

Visibility는 보안 수위를 설정하는 기능으로 Public과 Protected 그리고 Private 값이 들어올 수 있다.

 

1. Public : 클래스 외부에서도 접근 가능으로 클래스를 호출해 사용하는 프로그램 등 에서 어디서든 접근 할 수 있고, 자식 클래스에 상속이 된다.

 

2. Protected : 클래스 내부에서만 접근 가능으로 클래스 관리 툴에서만 접근할 수 있고, 자식 클래스에 상속된다

 

3. Private : 클래스 내부에서만 접근 가능으로 클래스 관리 툴에서만 접근할 수 있고, 자식 클래스에 상속되지 않는다.

 

Method 입력 Tab

 

 Methods에 2개 Method를 작성합니다. 1개는 변수2개를 받아 서로 빼는 method고

다른 1개는 변수 1개를 받아 제곱하는 method를 만들어 보자.

 

위에 그림에서 method를 마우스로 클릭하고 Parameters 버튼을 클릭하면 다음과 같이 변수 입력하는 창이 나옵니다.

 

Method에 Import, Export 파라미터 설정 화면

 

 Method 2개에 importing 변수와 exporting 변수를 입력해주고  Sourcecode 버튼을 눌러 코드를 작성하면 된다.

 

GET_MINUS / GET_SQUARE Method 코드

 

 

Sourcecode를 다음과 같이 작성하고 프로그램에서 Method를 어떻게 호출하여 사용하는지와

Class의 Attribute에 작성된 MV_NUM의 값이 어떻게 되는지 추적 해본다.

 

 

같은 프로그램내에서 방금만든 클래스의 Method를 호출

디버깅 화면

 

기본적으로 Method를 호출하는 방법은

CALL METHOD class=>method명 으로 사용하면 된다.

 

 동적으로 Method를 호출하여 사용가능하며 동적 호출은

class=>method명( f ) 로 사용하면 되고 dynamic 기호인 ( )를 꼭 사용해야 된다.

 

지금 만든 GET_MINUS 나 GET_SQUARE는 Static method이기 때문에 => 이 기호를 사용하지만

Instance method는 클래스를 인스턴스화하여 사용하기 때문에 -> 이 기호를 사용해야 한다.

 

 

그러면 위에 작성한 코드에서 Method변수와 Attribute (MV_NUM)이 어떻게 되는지 디버깅타면서 알아보자.

 

GET_MINUS Method 내부

 

GET_MINUS method를 타고 Importing 값과 Exporting값이 적용되었고 MV_NUM은 91로 저장되었다.

 

GET_MINUS Method 나온 후

 

GET_SQUARE method로 들어가기 전에 exporting 값이 lv_result에 할당이 되었고,

이제 get_square method에 들어갔을 때 MV_NUM은 어떤지 보자.

 

GET_SQUARE Method 내부

 

ET_SQUARE Method에 들어갔을 때 lv_num1,lv_num2,ev_result 값은 리셋으로 시작되지만

Class Attribute의 값(MV_NUM)은 GET_MINUS에서 얻은 값인 91로 그대로 유지되고 있다.

 

다음 단계로 넘어가면 LV_NUM2 = 91 - 25 = 66으로 적용되고

그 후 다시 MV_NUM의 값을 LV_NUM2로 바꾸면 MV_NUM의 값은 66으로 고정된다.

 

 

Method의 변수로 등록하는 것은 Method가 실행될때마다 리셋되지만,

 

Class Attribute에 넣어준 속성 값들은 프로그램내에서 계속 유지되어 있어 언제든지 Method를 통해 값을 가공하여 원하는 값을 얻을 수 있다.

 

Attribute에는 변수 뿐만 아니라 인터널 테이블 MT_XXX / 스트럭쳐 MS_XXX 식으로

 

Naming Rule에 어긋나지않게 작성 후 받아서 가공할 수 있다.

반응형

'SAP > ABAP' 카테고리의 다른 글

[ABAP] Search Help 초기 필드값 세팅  (0) 2024.05.28
[ABAP] Table 생성  (0) 2024.05.25
[ABAP] Search Help Exit 함수 만들기 - 2편  (0) 2024.05.22
[ABAP] Search Help Exit 함수 만들기 - 1편  (0) 2024.05.22
[ABAP] Search Help 만들기  (0) 2024.05.21

+ Recent posts