SAP Predefined ABAP Type 고정 길이 자주 쓰는 형 정리

SAP Predefined ABAP Type 은 SAP 딕셔너리 레벨에서 이미 정의해 둔 데이터 타입을 이야기 합니다.

해당 클라이언트 어디서든 접근해서 사용이 가능한 전역 레벨의 변수이며, Perform 문이나 Function, Class 등 어디에서든 접근해서 로컬 타입으로 사용할 수 있습니다.

그 유형으로는 C, D, I, N, P 그리고 문자열, T, X 등으로 정의되어 있습니다.

또, Predefined ABAP TYPE은 크게 사용할 수 있는 길이가 정해진 경우 혹은 정의하는 경우(고정 길이)와, 필드 길이가 스스로 조정되는 경우(가변 길이) 해야 하는 경우가 있습니다.

그 중 길이가 정해진 혹은 정의해서 사용할 수 있는 ABAP Predefined TYPE 변수 중에서 자주 사용되는 것을 정리해 보았습니다.

고정 길이 내장 숫자 형

주로 Integer, Float, Packed Number  등의 고정 숫자형 변수 타입이 많이 사용이 됩니다.

정수형(I)

TYPE I 으로 기술하며, 정수 타입만 지원을 합니다. 즉, 정수 또는 4바이트 길이의 정수에 사용이 됩니다.

만약 정수가 아닌 값이 할당되면 반올림되어 값이 들어가게 됩니다.

아이템의 갯수, 숫자 카운트, 테이블 인덱스, 인터널테이블 Rows 계산시 할당하여 사용합니다.

DATA: lv_number1 TYPE i,
lv_number2 TYPE i,

lv_sum TYPE i.lv_number1 = 5.
lv_number2 = 6.

lv_sum = lv_number1 + lv_number2.

WRITE: '합계:', lv_sum.

부동 숫자형(F)

TYPE F 로 기술하며, 부동 소수점 숫자를 처리할 때 사용합니다. 해당 숫자형의 길이는 8바이트입니다.

DATA: lv_number1 TYPE f,
lv_number2 TYPE f,
lv_result TYPE f.

* 두 실수 할당
lv_number1 = '9.45'.
lv_number2 = '5.22'.

* 두 실수 곱하기
lv_result = lv_number1 * lv_number2.

* 곱 결과 출력
WRITE: '두 실수의 곱:', lv_result.

고정 소수점 숫자형(P)

TYPE P 로 기술하며, 주로 금액이나 수량과 같이 정확한 계산을 요하는 경우에 사용이 됩니다.

즉, 금액 계산, 환율 변환, 수량 표현 등에서 자주 사용되게 됩니다.

DATA: lv_quantity TYPE i, // 수량의 경우에는 정수형(I) 
lv_price TYPE p LENGTH 10 DECIMALS 2,
lv_amount TYPE p LENGTH 12 DECIMALS 2.

* 수량과 단가 할당
lv_quantity = 15.
lv_price = '4.75'. // 소수점 2자리 숫자

* 금액 계산
lv_amount = lv_quantity * lv_price. // 소수점 2자리 숫자 결과

* 금액 출력
WRITE: '금액:', lv_amount.

고정 길이 내장 문자 유형

고정 길이 내장 문자 타입에는 Character, Date, Numeric 타입 등이 많이 사용됩니다.

캐릭터 타입(C)

텍스트 필드에 사용되며 기본 1바이트 길이 입니다. 숫자, 문자, 특수문자 모두 사용할 수 있습니다.

DATA: lv_name(20) TYPE c.

lv_name = '철수'.

WRITE: '이름:', lv_name.

날짜 타입(D)

기본적으로 날짜 필드에 사용이 되며 길이는 8바이트 입니다.

예를 들면 19970302 처럼 8자리로 표현이 됩니다.

DATA : LV_DATE TYPE D.

LV_DATE = SY-DATUM. "19970101 

WRITE: '날짜:', lv_date.

위의 SY-DATUM의 경우 ABAP SY 시스템 변수로써 더 자세한 사항은 아래의 링크로 확인할 수 있습니다.

숫자 캐릭터 타입(N)

숫자 텍스트 필드에 사용하며 기본적으로는 1바이트 길이입니다.

길이를 지정할 수 있으므로, 채워지지 않은 자리수는 숫자 외의 자리수만큼 0으로 채워집니다.

DATA : LV_N(3) TYPE N.

LV_N = '4'. // 004

길이 지정의 경우, 위의 방법 처럼 ()를 사용해도 되고, LENGTH 키워드를 사용할 수도 있습니다.

DATA : LV_N TYPE N LENGTH 3.

N 숫자 캐릭터 타입은 다음과 같이 숫자 자리수 나머지를 0으로 채울 때 유용합니다.

DATA : LV_N(2) TYPE N.

DATA : LV_FIELD(50) TYPE C.

FIELD-SYMBOLS : <FS_FIELD> TYPE ANY.

DO 12 TIMES.
  LV_N = SY-INDEX.
  LV_FIELD = 'GS_LIST-HSL' && LV_N. 
  ASSIGN(LV_FIELD) TO <FS_FIELD>.
  ...
ENDDO. 

위의 예시는 01, 02, 03….12 차례대로 값이 할당이 됩니다.

따라서 GS_LIST-HSL01, GS_LIST-HSL02…GS_LIST-HSL12 로 변수를 만들어서 필드 심볼에 할당해서 쓰면 유용하게 사용할 수 있습니다.

이상으로 ABAP Predefined type 중에서 고정 길이 타입 중 자주 사용되는 유형을 정리해 보았습니다.

Predefined TYPE에 대한 SAP의 공식 문서는 (여기) 에서 확인할 수 있습니다.

함께 보면 좋은 글

SAP 유지보수뷰 텍스트 필드 추가(+예제 설명)
abap break point 디버깅 방법 및 종류(Static, Dynamic)
sap abap 소스 검색 방법 2가지(+텍스트 스캔)