ABAP 데이터 타입 종류 및 예제

ABAP 데이터 타입 종류 및 예제

SAP ABAP에서는 다른 언어와 다르게 다양한 형태로 데이터 타입을 선언하여 사용할 수 있습니다. 자주 사용되는 ABAP 데이터 타입 종류 및 선언하여 사용하는 예제를 정리해 보았습니다.

우선 먼저 데이터 타입(Data type)과 데이터 변수(Data variable)를 구분해야 합니다.

데이터 타입은 변수를 담는 그릇 설계서를 이야기합니다. 즉, 물을 담을 수 있는 통이라고 한다면 몇 리터가 들어갈 수 있다라는 의미만 정의된 상태로 볼 수 있습니다.

아밥에서는 TYPE, TYPES 키워드를 통해 데이터 타입을 정의합니다.

이런 그릇에 물을 담을 수 있도록 그릇을 만드는 것, 즉 실제로 공간을 할당하는 것이 데이터 변수입니다. 실제로 컴퓨터 메모리 상에 공간이 할당이 되며 선언한 데이터 타입 만큼 값을 담을 수 있습니다.

아밥에서는 DATA 키워드를 통해 데이터 변수를 정의합니다.

ABAP에서 데이터 타입 및 변수를 다음과 같이 3가지 형태로 사용이 될 수 있습니다.

ABAP 데이터 타입(Data type)의 종류

Predefined ABAP Type

아밥 최하위 커널 레벨에서 정의된 가장 기본 데이터 타입을 이야기 합니다. C(Char), I(Integer), F(Float), P(Packed) 등이 많이 사용됩니다.

DATA : LV_XFELD TYPE C.
DATA : LV_XFELD1.
DATA : LV_INDEX TYPE I.
DATA : LV_TYPE TYPE P DECIMALS 3.

DATA 변수 뒤에 아무것도 선언하지 않은 경우는 TYPE C와 같습니다. 또 P 타입과 같이 따로 소수점을 명시해야(DECIMALS) 정확한 자리수를 활용할 수 있는 타입도 있습니다.

Local Data Type

일반적으로 해당 프로그램 전역 혹은 Perform문 내부에서만 사용되는 Structure나 Internal Table 활용에 주로 사용됩니다.

Local Type은 위의 첫번째 유형인 Predefined ABAP Type으로 만들어 질 수도 있고 다음에 설명할 Global Data Type 을 활용해서 만들 수도 있습니다.

TYPES: BEGIN OF T_TYPE.
TYPES :
INDEX TYPE I,
CODE TYPE STRING.
TYPES : END OF T_TYPE.

DATA : LT_CODES TYPE TABLE OF T_TYPE.

Global Data Type

SAP 시스템의 모든 ABAP 프로그램에서 사용할 수 있는 타입을 Global Data type 이라고 합니다.

즉, ABAP Dictionary에 등록된 Data Type을 이야기하며, ABAP 프로그램 내에서 TYPE 구문을 활용하여 Predefined type 처럼 사용할 수 있습니다.

DATA : GV_KOKRS TYPE KOKRS.
DATA : GV_WAERS TYPE WAERS.
DATA : GV_BUTXT TYPE BUTXT.

DATA : GV_POSNR(6) TYPE P.
DATA : GV_PERIO TYPE CE13000-PERIO.
DATA : GV_PERIO1 TYPE CE13000-PERIO.

Global Data Type은 일반적으로 Dictionary에 등록되기 때문에 Predefined ABAP Type 처럼 데이터 선언 마찬가지로 DATA 변수로 선언해서 사용하기만 하면 됩니다.

데이터 변수(Data variable) 활용

위에서 기술한 데이터 타입(Data type)을 활용해서 다음과 같이 데이터 변수(Data variable)을 선언하여 사용하면 됩니다.

그 외에도 다양한 형태로 선언하여 사용할 수 있는 예제를 알아보도록 하겠습니다.

TYPE [Global Data Type]

DATA : GV_PERIO TYPE CE13000-PERIO.
DATA : GV_PERIO1 TYPE CE13000-PERIO.

GV_PERIO, GV_PERIO1의 경우에는 CE13000 테이블의 PERIO라는 Global Data type 을 참조하여 만들어 졌으며, 두 변수 모두 PERIO 의 자리수 및 속성 그대로 물려받아 두 변수는 동일한 형태로 만들어 지게 됩니다.

LIKE [변수]

* LIKE : 이미 지정된 변수를 참조하여 해당 변수와 동일한 TYPE으로 선언
DATA : GV_PERIO_LIKE LIKE GV_PERIO.

자주 쓰이는 키워드 하나인 LIKE는, LIKE [변수] 에 정의된 변수의 속성을 그대로 참조 받아 데이터 변수를 선언하는 것입니다.

즉, GV_PERIO라는 변수에 사용된 데이터 타입을 그대로 물려받아 GV_PERIO_LIKE를 생성하게 됩니다.

다만, SAP에서는 LIKE의 사용보다는 가급적 TYPE을 쓰도록 권고하고 있고, 클래스 기반 멤버변수나 IMPLEMENTATION 에서는 사용할 수 없는 등의 제약이 있습니다.

DATA : LT_SFLIGHT TYPE STANDARD TABLE OF SFLIGHT.
DATA : LS_SFLIGHT1 LIKE LINE OF LT_SFLIGHT.

위와 같이 LIKE를 활용하여 인터널 테이블의 라인 아이템 변수의 데이터 타입을 정의할 수도 있습니다.

상수값 지정

상수값의 경우 프로그램에서 한번 지정된 후 바뀌어서는 안되는 경우 주로 사용됩니다. CONSTANTS의 경우 반드시 VALUE 키워드를 사용해야 합니다.

CONSTANTS : C_PALEDGER TYPE CE13000-PALEDGER VALUE '01'.
CONSTANTS : C_VRGARB TYPE CE13000-VRGAR VALUE 'B'.

위의 예제의 경우 C_PALEDGER는 ’01’ 값을 상수값으로, C_VRGARB의 경우는 ‘B’로 지정됩니다.

VALUE 키워드의 경우 CONSTANTS 상수값 지정외에도, 아래와 같이 변수 선언과 동시에 초기값을 지정하고자 하는 경우에도 사용할 수 있습니다.

DATA : LV_VALUE TYPE STRING VALUE '텍스트'.

Complete, Imcomplete 데이터 타입

데이터 타입의 종류를 나누는 기준에는 길이의 지정 여부로 나눌 수도 있습니다.

I, D 데이터 타입처럼 길이가 정해진 타입은 Complete Data Type 이라 부르고, C, N, X, P 처럼 길이를 따로 정의해줄 수 있거나 필요시 길이를 명시해야하는 데이터 타입을 Imcomplete Data Type 이라고 합니다.

Length 지정 : C, N, X, P 타입에서만 사용

DATA : LV_NUMBER1 TYPE N LENGTH 2.
DATA : LV_NUMBER2(2) TYPE N.

위의 예제는 2자리 길이의 같은 N 타입의 예제이며 괄호 ( ) 형태로 혹은 LENGTH 키워드로 정의할 수 있습니다.

DATA : GV_POSNR2(6) TYPE P.
DATA : GV_TIME_P TYPE P LENGTH 6 DECIMALS 3.

소수점 계산 등에 P 타입이 많이 사용되는데, 소수점을 구체적으로 명시해야 단수차 등을 최소화 할 수 있기 때문에 적절한 길이 지정이 필요할 때도 있습니다.

LENGTH 6 DECIMALS 3. 는 총 길이 6자리에서 소수점은 3자리를 사용한다는 뜻입니다.

또, 위에서 본 VALUE 키워드를 통해 소수점 형태의 초기값 혹은 상수를 선언하고자 할 때에는 아래와 같이 작은 따옴표로 감싸서 기술해 주어야 합니다.

DATA : LV_P1 TYPE P DECIMALS 4 VALUE '1.1'.

이상으로 ABAP 데이터 타입 종류 및 변수 예제 등을 알아보았습니다.

SAP ABAP에서 사용되는 데이터 타입의 더 자세한 사항은 SAP 공식 문서 ABAP 데이터 타입을 참고해보시기 바랍니다.

함께 보면 좋은 글

SAP 테이블 데이터 수정 SE16N 사용법(+권한 없을 때 se16n_interface)
SAP 유지보수뷰 텍스트 필드 추가(+예제 설명)
abap break point 디버깅 방법 및 종류(Static, Dynamic)
sap abap 소스 검색 방법 2가지(+텍스트 스캔)