티스토리 뷰

02 ) Data Object


본 게시물은 SAP 혁신성장 청년인재 양성과정에서 교육받는 교육생이 정리 목적으로 포스팅하는 것으로,

전문성 및 실용성이 다소 떨어지거나 정보가 부정확 할 수 있으니 참고 목적으로만 읽어주시기 바랍니다.

 

 

Data Object

 

 Data를 담는 공간으로 해당 데이터에 정의된 자료형으로 저장된다.

 데이터는 정의된 자료형마다 할당되는 메모리가 다르며 입력할 수 있는 값 또한 구별된다.

 할당되는 메모리 및 입력되는 값은 01) Data Type 에서 확인할 수 있다.

 

 

변수의 선언

 

 변수를 선언하는 기본적인 방법은 다음과 같다.  

DATA [변수 이름] TYPE [자료형] (LENGTH n) (VALUE v).

  VALUE는 생략할 경우 해당 자료형의 기본값으로 입력된다. (0 또는 공백)

 Complete Data Type의 경우 LENGTH 구문을 사용할 수 없으며 Incomplete Data Type (C,N,P,X)만 LENGTH 구문을 사용하여 길이를 지정해 줄 수 있다. (LENGTH 지정을 생략하면 초기 길이로 정의된다.)

 

 Incomplete Data Type을 사용하는 변수의 경우 길이를 지정해 줄 때 다른 방식으로 변수를 선언해 줄 수도 있다.

다음은 위와 동일한 구문이다.

DATA(n) TYPE [자료형] (VALUE v).

 

다수의 변수를 선언하는 경우는 ' : ' 과 ' , '를 이용한다.

DATA: GV_NUM1 TYPE I,
             GV_NUM2 TYPE I VALUE 17,
             GV_STR1 TYPE C LENGTH 10,
             GV_STR2(15) TYPE C,
             GV_STR3 TYPE C LENGTH 8 VALUE 'ASDF'.

 

 

TYPE와 LIKE

 

 위 변수의 선언은 Standard Data Type을 이용하여 선언한 경우라고 할 수 있다. 

앞서 Data Type에서 설명한 바와 같이 Local Type, Global Type 을 이용하여 변수를 선언할 수도 있는데 여기서 TYPE와 LIKE를 쓰게 된다.

 

TYPE : SAP System 내 존재하는 TYPE를 직접 참조할 때 사용한다.

LIKE : 프로그램 내에서 정의된 것을 참조할 때 사용한다. (즉, Local Type를 참조한다.)

 *Like는 값을 가져오는 것이 아닌 메모리의 형태를 가져오는 것으로 Value는 가져오지 않으니 주의

 *Table Field와 System Field는 TYPE와 LIKE 모두 사용 가능하지만 TYPE를 사용할 것을 권장한다고 한다.

 

위 예시들을 보면 Standard Data Type (시스템 내 정의되어 있는) 을 참조하여 변수를 선언하였으므로 TYPE를 사용한다.

 

Global Data Type를 이용할 경우 LIKE를 사용한다.

DATA: GV_NUMBER1 TYPE I VALUE 17,
             GV_NUMBER2 LIKE GV_NUMBER1.

 GV_NUMBER2는 GV_NUMBER1와 같은 자료구조를 가지지만 GV_NUMBER1의 VALUE값(17)은 가지지 않는다.

 

 

 

STRUCTURE와 TABLE

 

 데이터 오브젝트중 Structure와 Table이라는 것이 존재하는데, Structure란 하나 이상의 변수 세트를 가지는 것이며 Table(Internal Table)은 여러개의 Structure 세트를 가지는 것을 의미한다.

 

 Struture은 'BEGIN OF' 와 'END OF'를 이용하여 선언한다. 

DATA: BEGIN OF GV_PERSON,
             NAME TYPE C LENGTH 15,
             AGE TYPE I,
             GENDER TYPE C,
             BIRTHDAY TYPE D,  
END OF GV_PERSON.

 

디버깅을 이용하여 생성된 GV_PERSON Struture을 살펴보면 다음과 같다.

 

 

GV_PERSON Struture 안의 컴포넌트에는 하이픈( ' - ' ) 으로 접근할 수 있다.

GV_PERSON-NAME = 'crackerjack'.
GV_PERSON-AGE = 3.
GV_PERSON-GENDER = 'M'.
GV_PERSON-BIRTHDAY = '20171102'.

다음과 같이 GV-PERSON Struture에 값이 들어가게 된다.

 

 

Table은 필드를 직접 입력하여 생성하는 방법과 Type, Struture를 참조하여 생성하는 방법이 있다.

 

*필드를 직접 입력하여 생성하는 방법
*OCCURS는 HEADER(Struture) 자동생성함
DATA : BEGIN OF TB_PERSON_1 OCCURS 0,

             NAME TYPE C LENGTH 15,
             AGE TYPE I,
             GENDER TYPE C,
             BIRTHDAY TYPE D,
END OF TB_PERSON_1.

* TYPE를 참조하여 생성하는 방법
TYPES : BEGIN OF TY_PERSON,
             NAME TYPE C LENGTH 15,
             AGE TYPE I,
             GENDER TYPE C,
             BIRTHDAY TYPE D,
END OF TY_PERSON.

DATA TB_PERSON_2 TYPE TABLE OF TY_PERSON.

* STRUTURE를 참조하여 생성하는 방법
DATA TB_PERSON_3 LIKE TABLE OF GV_PERSON.    

 

위 TB_PERSON_1, 2, 3은 모두 다음과 같은 구조를 가진다.

 

 

Internal Table에는 헤더라인이 있는 테이블과 없는 테이블이 있으며 종류도 Standard Table, Sorted Table, Hashed Table 등 다양하다. 

Internal Table에 대한 자세한 정보는 다음 파트에서 다뤄보도록 한다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함