본문 바로가기

Easy Abap 2.0

[2주차] Chapter 2 Data Type Part 2

Data Type 종류 

 

1.  고정 길이를 가지는 기본 Predefined ABAP Type

 

ABAP은 고정 길이를 가지는 8가지 기본 Data Type을 제공하고 있다.

아래 표는 Data Type이 표현할 수 있는 길이와 초기값을 설명한다.

 

  초기 길이 가능 길이 초기값 의미
Numeric Types
I 4 4 0 Integer
(정수)

1) 정수가 아닌 것은
    반올림

2) Counter, Item 수
    Index 등에 쓰임
F 8 8 0 Floating point
number

(부동 소수점 수)

1) 지수 형태로 표현됨

2) 내부적으로 Binary
System으로 전환될 때
반올림 에러가 발생할 수 있음

3) 높은 정확도를 요구한다면 TYPE P를 사용해야하며, 매우 작거나 큰 수라면 TYPE F를 권장함

4) Value 범위가 넓은 경우나, 반올림 오류가 중요한 사항이 아닐 경우 TYPE F를 사용함
P 8 1-16 0 Pakced number


1) 소수 자리를 허용
2) 가용 size1-16 byte
3) 소수는 최대 14자리      설정
4)프로그램 속성
   setting 시
  Fixed point arithmetic 체크해야함, 

그렇지 않을 경우
TYPE P는 정수로 표현됨

5) 정확한 계산을
   요하는 Business 
   Calculation              목적으로    사용됨
 
Character Types
C 1 1-65535 '...'  
D 8 8 '00000000'  
N 1 1-65535 '0 ...0'  
T 6 6 '000000'  
Hexadecimal(16진수) Type
X 1 1-65535 X'0...0' 프린트 언어와 그래픽 관련된 영역에서 많이 사용

 

 

1.1 Numeric Opera/tion(연산자)

 

1) Basic Arithmetic Operation(기본 산술 연산자)

 

숫자 타입 F, I, P의 데이터 산술식에서 사용되는 기본적인 기호와 키워드

 

기호 의미 사용 예 기호와 동일한 키워드
+ 더하기 <p>= <n>+<m>. ADD <n> TO <m>
- 빼기 <p>=<m>-<n>. SUTBTRACT <n>
FROM <m>
* 곱하기 <p>=<m>*<n>. MULTIPLY <m>
BY <n>
/ 나누기 <p>=<m>/<n>. DIVIDE <m>
BY <n>
DIV Integer 나누기 <p>= <m> DIV <n>.  
MOD Integer 나누기의 나머지 <p>= <m> MOD <n>.  
** 제곱 <p>= <m> ** <n>  

 

2) Numeric Data Type 함수

 

함수 내역 사용 예
ABS 절대값 리턴 ABS(-100) 은 100을 리턴
SIGN 부호에 대한 결과 리턴 마이너스 -1,
0-> 0,
플러스 + 리턴
CEIL 해당 값보다 작지 않은 가장 큰 정수 리턴 ceil(1.3), ceil(1.7) 모두 2를 리턴
FLOOR CEIL의 반대 floor(1.3), floor(1.7) 모두1을 리턴
TRUNC 소수점을 버리고 정수만 남김 trunc(1.3), trunc(1.7) 모두 1을 리턴
FRAC 소수점 이하 자리만 남김 frac('2.9')는 0.9를 리턴

 

2. Character Type

 

Character Type은 크게 4가지가 존재하며 Character Field라고 부른다.

 

데이터 타입 의미
C 문자, 숫자, 특수문자에 사용
N 숫자를 C타입으로 표현
Integer 형태를 문자 타입으로 보여줌.
D 날짜 타입을 표현
T 시간 타입을 표현

 

※ 문자 길이를 지정할 경우 변수 뒤에 LENGTH 옵션을 이용할 수 있는데
이 옵션은 C,N,X, P 타입에서 사용가능하며, 변수 길이 정의한다. 

 

3. 가변 길이를 가지는 Predefined ABAP Type

 

String이 대표적이며 가변 길이를 가지는 Data Type C와 유사

아주 긴 문자열을 표현할 경우 String을 사용하면 유용함.

 

String 관련 명령어

 

명령어 의미
FIND ABAP이란 글자안에 B가 있으면,
시스템 변수 SY-SUBRC = 0 반환
REPLACE ABAP을 BBAP로 바꿈
TRANSLATE 대소문자를 변경함
SHIFT ABAP을 왼쪽으로 한 칸씩 옮김
CONDENSE 공백을 제거하여 왼쪽으로 정력 
NO-GAPS와 주로 사용되어 SPACE 제거
OVERPLAY character의 빈 곳을 채우고, 채워져 있는 곳을 덮어쓰지 않음
CONCATENATE AB+AP을 합쳐서 ABAP으로 연결
SPLIT 기존 문자 C를 중심으로 AB와 AP로 나눔.

 

 

4. 프로그램의 Local Type

 

1) TYPE 선언

 

프로그램 내에서 Local Type을 선언하여 로컬 프로그램에서만 특별한 타입으로 사용하기 위해 TYPES 구문을 이용한다.

 

2) Structured TYPE 선언

 

여러 개 필드로 이루어진 구조체 타입을 선언할 수 있다.

 

 

5. ABAP Dictionary의 Type

 

ABAP Dictionary는 Global Data Type이다.

ABAP Dictionary(Table, Structure, Data Element)는 모든 프로그램에서 Data Type으로 선언하여 사용할 수 있다.

 

1) Table, View를 이용한 TYPE 선언

 

Database Table과 View 전체를 참고하여 구조체 및 인터널 테이블을 선언할 수 있다.

그리고 Table의 필드만을 참고하여 선언할 수 있다.

 

2) Data Type을 이용한 TYPE 선언

 

    1) Data Element

    2) Structure를 이용한 TYPE 선언
        -Structure는 여러 개의 TABLE에 존재하는 필드들을 조합할 필요성이 있을 경우에 자주 사용된다.

 

3) Type Group을 이용한 TYPE 선언

 

Type Group은 INCLUDE Technique을 기반으로 하며, 여러가지 TYPE을 그룹으로 묶어서 선언할 때 사용된다.

Type Group은 모든 프로그램에서 사용할 수 있는 Global Data Type이다.

모듈별로 자주 사용하게 되는 타입들을 Type Group으로 관리하는 것도 좋은 방법이다.

 

SLIS라는 TYPE-POOL을 생성하여 개발 시에 자주 사용하는 ALV 프로그램도 이용 가능하다.

 

4) ABAP Dictionary Type vs ABAP Type

 

ABAP Dictionary Type ABAP Type
ACCP N(6)
CHAR n C(n)
CLNT C(3)
CUKY C(5)
CURR n, m P((n+1)/2) DECIMAL m
DEC n, m P((n+1)/2) DECIMAL m
DATS D(8)
FLTP F(8)
INT1 X(1)
INT2 X(2)
INT4 X(4)
LANG C(1)
NUMC n N(n)
PREC X(2)
QUAN n, m P((n+1)/2) DECIMAL m
RAW n X(n)
TIMS T(6)
UNIT C(n)
VARC n C(n)
LRAW X(n)
LCHR C(n)
STRING STRING

 

 

6. Assinging Value(값 할당)

 

변수를 선언하거나 실제 데이터가 처리되는 구문에서 Data Object에 값을 할당할 수 있다.

앞에서 살펴보았듯이 변수를 선언할 때 VALUE 구문을 통하여 초깃값을 정의할 수 있고,

실제 데이터를 처리하는 프로그램 구문 내에서 MOVE 또는 WRITE TO 구문을 이용하여 변수에 값을 할당하게 된다.

MOVE TO 구문은 Equal 구문과 동읠한 의미이다.

 

7. 기타 변수 선언

 

1) Constants

  • 프로그램 내에서 자주 사용하게 되는 값을 상수(constant)로 선언하여 사용
  • 상수로 사용하게 되면 프로그램 내에서 변경 불가
  • Constant 변수를 여러 번 사용하였고, Constant 변숫값을 변경하여야 할 경우에는 한 번만 변경하면 되기 때문에
    프로그램 수정 시간을 절감 할 수 있다.
  • 숫자를 의미 있는 변수명으로 지정함으로써 프로그램 가독성에도 큰 도움이 된다.

2) STATICS

3) TABLES

  • Tables 구문을 사용하여 ABAP Dictionary Table, VIew, Structure를 선언하게 되면
    ABAP Dictionary 타입과 같은 Data Object를 생성하게 된다.
    이것을 Table Work Area라고 부르며 구조체처럼 사용할 수 있다.