ABAP에서의 타입의 참조변수
ABAP에서 타입의 참조변수는 특정 데이터 타입을 가르키는 변수로, TYPE REF TO(컬러표시) 문법을 사용하여 선언됨.
-> 객체지향 프로그래밍(OOP)에서 클래스의 인스턴스를 참조하거나, 데이터 타입을 동적으로 다룰때 유용하게 사용됨.
따라서, 현재 구현해야할 동적 필드 카탈로그를 만들땐,,, 필수적일수밖에 없구나,,
참조변수란(REFERERNCE VARIALBLE)?
일반적으로 데이터 변수는 값을 직접 저장하지만, 참조변수는 데이터 또는 객체의 메모리 주소에 저장. 즉, 참조 변수를 통해 해당 데이터나 객체를 가리키고 조작 가능.
타입 참조 변수의 종류
A. 클래스 참조 변수(클래스 객체참조)
CLASS lcl_car DEFINITION.
PUBLIC SECTION.
DATA: model TYPE string.
ENDCLASS.
CLASS lcl_car IMPLEMENTATION.
ENDCLASS.
DATA: lo_car TYPE REF TO lcl_car. " 클래스 참조 변수 선언
CREATE OBJECT lo_car. " 객체 생성
lo_car->model = 'BMW'. " 참조 변수를 통한 필드 접근
WRITE: lo_car->model. " 출력: BMW
B. 데이터 타입 참조 변수
데이터 타입을 가리키는 동적 참조 변수
DATA: lr_data TYPE REF TO data. " 일반적인 데이터 타입 참조 변수 선언
FIELD-SYMBOLS: <fs_data> TYPE any.
CREATE DATA lr_data TYPE i. " 정수형 데이터 객체 생성
ASSIGN lr_data->* TO <fs_data>. " 포인터처럼 값에 접근
<fs_data> = 100.
WRITE: <fs_data>. " 출력: 100
TYPE REF TO data는 어떤 데이터 타입이든 저장할 수 있는 일반적인 데이터 참조 변수임.
참조 변수의 활용
CLASS lcl_parent DEFINITION.
PUBLIC SECTION.
METHODS: show.
ENDCLASS.
CLASS lcl_child DEFINITION INHERITING FROM lcl_parent.
PUBLIC SECTION.
METHODS: show REDEFINITION.
ENDCLASS.
CLASS lcl_parent IMPLEMENTATION.
METHOD show.
WRITE: '부모 클래스'.
ENDMETHOD.
ENDCLASS.
CLASS lcl_child IMPLEMENTATION.
METHOD show.
WRITE: '자식 클래스'.
ENDMETHOD.
ENDCLASS.
DATA: lo_obj TYPE REF TO lcl_parent.
lo_obj = NEW lcl_child( ). " 부모 클래스 참조 변수가 자식 클래스 인스턴스를 참조
lo_obj->show( ). " 출력: 자식 클래스
lo_obj는 lcl_parent 타입이지만, 실제로는 lcl_child 객체를 참조하므로 lcl_child의 show 메서드가 실행
a. TYPE REF TO는 참조 변수를 선언할 때 사용합니다.
b. 참조 변수는 클래스 객체나 데이터 타입을 동적으로 가리킬 때 사용됩니다.
c. 동적 할당을 통해 데이터나 객체를 생성하고, -> 연산자로 접근할 수 있습니다.
d. 객체 지향의 다형성을 활용하여 부모 클래스의 참조 변수로 자식 클래스를 다룰 수 있습니다.