# Data Type 이란 무엇인가?
Data Type은 Data Object의 형태 및 속성을 부여하는 역할을 하며,
Data Object를 정의하기 위한 하나의 템플릿으로도 표현 할 수 있다.
예를 들어 빵집에서 쿠키를 만들 때 각종 모양의 틀로 찍어서 토끼, 별, 달과 같은 모양을 만드는 것 처럼,
그 찍어내는 틀을 Data Type으로, 찍혀서 나온 쿠키를 Data Objcet 로 비유할 수 있다.
이러한 템플릿(Data Type)은 ABAP에서 사전에 미리 정의되어 있기도 하고,
우리가 프로그램을 개발하면서 직접 정의를 할 수도 있다.
또한 Data Object는 메모리 공간을 할당되는 존재지만 Data Type은 메모리 공간에 존재하지 않는다.
Data Type은 다음과 같이 3가지로 나눌 수 있습니다
* ABAP Predefined Type ( 기본 Type )
* 프로그램 내에서 정의한 Type
* ABAP Dictionary에서 정의된 Type
이 3가지 Type은 Data Object 선언시 'TYPE' 구문 뒤에 사용되어 집니다.
DATA Data Object Name TYPE Data Type.
# ABAP 데이터 타입(Data Tpe)의 종류
1. ABAP Predefinde Type(기본 Type)
형태 | 길이 | 타입 | 설명 |
문자 | 고정 (길이 지정 가능) | C | 수를 포함한 문자 타입으로 Alphanumeric 타입 |
고정 (길이 지정 가능) | N | 수를 문자타입으로 표현한 형태. | |
고정 | D | 날짜 타입. *세팅 포맷에 맞는 8자리 (기본 YYYYMMDD) | |
고정 | T | 시간 타입. *세팅 포맷에 맞는 6자리 (기본 HHMMSS) | |
가변 | STRING | 길이 제한이 없는 문자형 타입 | |
숫자 | 고정 | I | 정수형 타입 |
고정 ( 소수점 길이지정) | P | 소수점을 포함한 수의 형태. 소수점 길이를 명시해 주어야 함. |
그 외에 숫자 타입으로는 B, S, DECFLOAST16, DESFLOAT34, F 가있다.
여기서 자료형의 길이를 임의적으로 정의해줄 수 있는지 아닌지로 구분할 수 있다.
길이를 정의할 수 없는 자료형은 Complete Data Type 라 불리며
길이를 따로 정의해줄 수 있는 자료형은 Imcomplete Data Type라 불린다
Complete Data Type
길이를 따로 지정해줄 수 없는 Data Type이다.
D : 8자리 날짜. YYYYMMDD 8의 길이를 가진다.
T : 6자리 시간. HHmmSS 6의 길이를 가진다.
I : Integer(정수) 자료형. 4Byte의 길이를 가진다.(-2,147,483,648 ~ 2,147,483,647)
F : Float(실수) 자료형, 8Byte의 길이를 가진다.
String, XString : 문자열과 긴 문자열(16진수). 데이터에 입력된 문자열의 길이만큼 자동으로 지정된다.
Imcomplete Data Type
길이를 따로 정의해줄 수 있는 자료형을 말하며 LENGTH명령어로 길이를 선언해 줄 수 있다.
TYPE [자료형] (LENGTH) [자료형의 길이] ex) TYPE C LENGTH 4.
길이를 선언해주지 않으면 자료형의 초기값으로 길이가 정의된다.
지정된 자료형의 길이 이상의 값을 Data Object에 넣었을 경우 해당 길이 이상의 값은 자동적으로 삭제된다.
C : Character(Alaphanumeric Characters)로 길이를 지정하지 않으면 1(초기값)로 정의된다. (가능 길이 1~65535)
N : Numeric Text로(Numeric Characters) 길이를 지정하지 않으면 1로 정의된다. (1~65536)
X : Hexadecimal(16진수) 타입으로 길이를 지정하지 않으면 1로 정의된다. (1~65536)
P : Packed Num으로 소수의 값을 가질 수 있는 Data Type이다. LENGTH [정수길이] DECIMAL [소수 길이]로 길이를 지정해준다. 길이를 지정하지 않으면 8로 정의되며, DECIMAL을 지정하지 않으면 INTEGER와 동일하게 취급된다. (1~16)
TYPE P LENGTH [정수 길이] DECIMALS [소수 길이]
Predefined Type 선언예시
DATA : LV_INT TYPE I, "정수형
LV_FLOAT TYPE F, "소숫점을 포함한 실수형
LV_DATE TYPE D, "날짜
LV_TIME TYPE T, "시간
LV_CHAR TYPE C LENGTH 2, "문자열
LV_STRING TYPE STRING, "가변 문자열
LV_XSTRING TYPE X, "16진수 문자열
LV_PTYPE TYPE P DECIMALS 2 , "소숫점 포함 실수형
LV_NUM TYPE N LENGTH 10. "숫자형
DATA : BEGIN OF LS_DTYPE,
INT TYPE I,
DATE TYPE D,
TIME TYPE T,
CHAR TYPE C LENGTH 10,
END OF LS_DTYPE.
2. 프로그램 내에서 정의한 Type
프로그램 내에서만 사용할 목적으로 정의하며, Type이 선언된 프로그램에서만 사용가능하다.
'TYPES' 구문을 이용하여 사용할 Type을 정의한다.
'TYPES' 의 일반적인 사용 문법은 다음과 같다.
TYPES Data Type Name TYPE Data Type.
'TYPES'의 다양한 옵션을 통해서 Data Object의 모든 형태 ( 필드 / 구조체 / 인터널테이블 ) 의 Type이 정의가 가능하다.
3. ABAP Dictionary에서 정의된 Type
ABAP Dictionary ( T-Code 'SE11') 에서 정의된 Type 들을 말하며,
이 곳에서 정의된 Type들은 Global 하게 사용이 가능하기 때문에 프로그램에서 별도 정의 없이 모두 사용할 수 있다.
ABAP Dictionary에서는 모든 형태의 Data Object Type을 정의할 수 있으며,
Data Object 선언시 사용되는 Dictionary 속성은 다음과 같다.
Data Object | Dictionary 속성 | 설명 |
필드(변수) | Data Element | Single Value를 가질 수 있는 하나의 필드 형태. Dictionary Predefined Type 또는 Domain 기반으로 정의됨. |
구조체 | Structure | 하나 이상의 필드가 그룹되어진 형태. |
구조체 | Database Object | Dictionary에서 Type을 정의하는 속성이 아닌 Database에 존재하는 Table과 Classic View를 말함. Type 으로 사용시 Table/View와 동일한 필드들의 구성을 가진 구조체 형태가 됨. |
인터널테이블 | Table Type | 동일 Structure 의 형태로 여러 라인을 담을 수 있는 형태. Dictionary에 정의된 Structure 기반으로 정의됨. |
공통적으로 구조체 형태를 가진 Data Type 들은 구조체를 구성하는 필드 중 하나를 택해
필드 형태의 Data Object 선언시에도 사용될 수 있다.
표기법은 'Structrue명-Field명' 과 같이하며 '-' 로 구분한다
또한 선언 구문을 활용하여 구조체 또는 필드 형태의 Data Type 으로도
인터널 테이블 형태의 Data Object를 선언할 수 있다.
ABAP Dictionary에서 정의된 Type 선언예시
DATA: GV_CARRID TYPE S_CARR_ID,
GV_CONNID TYPE S_CONN_ID.
자세한 타입 선언 방식은 다음 포스팅에서 계속됩니다
'SAP > ABAP' 카테고리의 다른 글
[SAP_ABAP] Data Type - 내장함수 (0) | 2024.07.21 |
---|---|
[SAP_ABAP] Data Type - 종류 및 선언(2) (0) | 2024.06.30 |
[SAP_ABAP] View Type 알아보기 (0) | 2024.06.03 |
[SAP_ABAP] ABAP Dictionary란? (0) | 2024.04.24 |
[SAP_ABAP] 데이터 오브젝트(DATA OBJECT)란? (0) | 2024.04.23 |