loading
본문 바로가기
SAP/ABAP

[SAP_ABAP] Data Type - 종류 및 선언 (1)

by 원쿤짱쿤 2024. 6. 30.
반응형

 

# 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.

 
 
 
자세한 타입 선언 방식은 다음 포스팅에서 계속됩니다