본문 바로가기
SAP/Abap Cookbook

3.2 Reference Data Objects

by Radler 2023. 1. 29.

3.2.1 데이터 참조 선언

 

데이터 참조(Data Reference)야 말로 포인터의 의미와 같다.

데이터 참조 변수가 데이터에 접근하려면 역참조가 선행되어야한다.

 

한 줄 요약 : 포인터 = 데이터 참조 변수 = 주소값을 가짐.


3.2.2 데이터 참조 Assign

 

Get reference of dobj into dref.

(=> dref REF #( dobj ).)

 

dobj의 주소를 가지고 있을 뿐, dobj의 실제 값에는 접근하지 못한다. 

 

한 줄 요약 : 데이터 참조변수를 assign 한다는 것은 dref에 특정 dobj의 주소값을 준다는 것 

 


3.2.3 Dynamic Data Obj. 생성

 

* create data vs get reference of 

create data 는 참조변수에 의해 참조되는 한 프로그램 내에 계속 살아있다.

get reference of 는 프로시져 내 로컬 변수나 글로벌 변수를 참조하는 화살표.

(따라서, 참조하는 dobj이 서브루틴 내에서 죽어버리면 dref는 Freed Stack 되어질 수 있다)

 

한 줄 요약 : get reference 는 주소와 연관, deference는 데이터 값과 연관.


3.2.4 데이터 참조 변수 끼리 Assign 

 

Assign 하는 2가지 방식, (다시 한 번 말하지만, 포인터를 카피하는 거지, 데이터 오브젝트 그 자체를 카피하는 게 아니다.)

우선, lr_dref2 = lr_dref1.

다음은, Move lr_dref1 to lr_dref2.

 

한 줄 요약 : move to 와 =은 같은 역할을 한다.


3.2.5 역참조(Dereference)

 

dereferenced 참조 변수는 lvalue 가 될 수도 있고, rvalue가 될 수도 있다.

(좀 더 공부필요. 현 수준에서는 그냥 그런갑다 하고 흘리자)

*lvalue : 주소 가지고 있음. Assign 되어질 수 있음.

*rvalue : lvalue + Assign 될 수 없는 문자열이 될 수 있음.

 

->* : *는 dref의 모든 컴포넌트들(?)을 dereference 한다는 의미.

따라서, dref가 str.의 경우, lr_dref->connid 의 형태처럼 dereference된 특정 컴포넌트의 값을 가져올 수 있다.

 

한 줄 요약 : '->' 는 dobj의 데이터 값에 접근하겠다는 의미


모르는 단어 정리

 

consolidate : 통합하다, 강화하다

deprecate : 반대하다

'SAP > Abap Cookbook' 카테고리의 다른 글

3.3 ABAP Run Time Type Services (RTTS)  (0) 2023.01.30
3.1 Working with Field Symbols  (0) 2023.01.29