티스토리 뷰
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에 대한 자세한 정보는 다음 파트에서 다뤄보도록 한다.
'SAP > ABAP' 카테고리의 다른 글
SAP 혁신성장 청년인재 양성과정) ABAP 04) Internal Table (0) | 2020.06.30 |
---|---|
SAP 혁신성장 청년인재 양성과정) ABAP 03) 시스템 변수 (2) | 2020.06.18 |
SAP 혁신성장 청년인재 양성과정) ABAP 01) Data Type (0) | 2020.06.16 |
- Total
- Today
- Yesterday
- 게리맨더링 2
- ABAP
- 모노미노도미노
- deep copy
- 19235
- 19238
- 5373
- 19236
- 파이썬
- 17779
- 17140
- 19237
- 어른 상어
- mutable
- 얕은복사
- 청소년 상어
- 백준
- Boi
- 알고리즘
- 스타트택시
- 이차원 배열과 연산
- 큐빙
- 삼성 SW 역량 테스트
- immutable
- 원판 돌리기
- Internal Table
- shallow copy
- 17825
- 17822
- 주사위 윷놀이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |