1. OVERVIEW
1) Data Type과 Data Variable의 비교
Data Type | Data Variable |
ABAP 프로그램에서 사용하는 변수의 타입을 정의하기 위해서 사용 | Data Type을 참고하여 프로그램에서 사용할 수 있는 변수 |
Data Variable(데이터 변수)와 독립적으로 선언하게 됨 | Data Type을 참고하여 선언하게 됨 |
ABAP Dictionary의 타입을 프로그램에서 참고하여 사용할 수 있음. | 프로그램의 실행 시점에 메모리를 차지하는 데이터 변수 의미 |
2) Data Type의 종류
(1) Predefined ABAP Type
- Kernal 레벨에서 정의되어 있는 기본 데이터 타입
- C, JAVA(c,f,l) 타입과 같이 이미 정의되어 있는 데이터 TYPE
(2) Local Data Type in Program
- ABAP 프로그램 내에서 Predefined ABAP Type을 이용하여 Local Type 생성
- Predefined ABAP Type을 조합하여 여러 필드가 추가된 Structure 타입을 정의하여 사용할 수 있음.
(3) Global Data Type in ABAP Dictionary
- 모든 ABAP 프로그램에서 사용할 수 있는 Global Data Type
- ABAP Dictionary Data Type은 ABAP프로그램 내에서 TYPE 구문을 이용할 수 있음.
- 즉, T-CODE:SE11에서 생성하는 ABAP Dictionary 오브젝트들은 모든 ABAP 프로그램에서 변수를 선언할 때 데이터 타입으로 사용가능.
- 예시) Table(Table Field) Data Type Data Element Structure Table Type
3) Data Variable 선언
(1) Predefined ABAP Type 이용하여 변수 선언
DATA : gv_num TYPE i,
gv_deci TYPE f,
gv_date TYPE d,
gv_time TYPE t,
gv_text1 TYPE c,
gv_text2 TYPE c,
gv_longtext TYPE string.
(2) 프로그램의 Local Type을 이용하여 변수 선언
Local 프로그램에서 자주 사용하게 되는 데이터 및 구조를 TYPE으로 선언하여,
프로그램 내에서만 ABAP 기본 데이터 타입처럼 사용할 수 있다.
TYPES : BEGIN OF t_struct,
col1 TYPE c,
col2 TYPE i,
col3 TYPE d,
END OF t_struct.
(3) ABAP Dictionary Type을 이용하여 변수 선언
ABAP Dictionary(Table, Structure, Data Element 등)는 모든 프로그램에서 선언하여 사용할 수 있다.
DATA : gv_carrid TYPE s_carrid,
gv_connid TYPE sflight-carrid,
gv_matnr TYPE mara-matnr.
4) DATA 구문
(1) TYPE type
데이터 변수의 타입을 정의한다.
예시) DATA : gv_num TYPE i.
※ 콜론(:) 기호는 동일한 명령어를 쉼표( , )로 구분하여 마침표( . )를 만날 때까지 실행하도록 한다.
명령어를 수행하고 동일한 기능을 여러 번 실행할 수 있도록 해준다.
예를 들어 다음과 같이 콜론(:) 기호를 이용하여 변수 2개를 한번에 선언할 수도 있다.
DATA gv_num1 TYPE I,
DATA gv_num2 TYPE I.
↓
DATA : gv_num1 TYPE I,
gv_num2 TYPE I.
(2) LIKE num
앞에서 생성한 Data Variable인 gv_num1과 동일한 타입의 변수를 선언할 때 사용된다.
타입이 있는 모든 데이터 변수(Field, Parameter, Structure, 시스템 변수 등)를 사용할 수 있다.
예시) DATA : gv_num2 LIKE gv_num1,
(3) VALUE int
모든 데이터 타입은 Initial Value(초기값)가 존재한다. DATA 구문을 사용할 때 VALUE 옵션을 사용하면
기본 Initial Value 대신에 int로 초기값을 설정한다.
VALUE IS INITIAL 구문을 사용하면 Data Type의 Initial Value로 지정된다.(생략해도 된다)
Constants 변수를 선언할 때에는 VALUE 옵션은 필수사항이다.
예시) DATA : gv_num TYPE i VALUE 123,
gv_flag VALUE 'X',
gv_val VALUE IS INITIAL,
gv_idx LIKE sy-tabix VALUE 45.
(4) LENGTH n
필드의 길이를 설정한다. C, N, P, X 타입에만 사용할 수 있다.
예시) DATA : gv_num TYPE n LENGTH 2.
(5) DECIMALS n
Data Type P에서만 사용 가능하며, 1~14 사이의 소수 자리 수를 설정
예시) DATA : gv_num TYPE p DECIMALS 3.
5) ABAP 기본 문법
6) ABAP Naming Rule
프로그램 개발 방법론 중에 가장 기본이 되는 것은 테이터를 저장하는 변수의 이름을 정하는 규칙이라 할 수 있다.
변수 또는 오브젝트의 이름을 정하는 규칙을 ' Naming Rule' 이라고 한다.
모든 프로그램 언어에서는 가독성을 높이고, 변수 간의 충돌을 피하며 프로그램의 구조적 통일성을 위하여
Naming Rule을 정할 것을 권고하고 있다.
SAP에서는 고객사에서 사용할 수 있는 ABAP Dictionary의 Naming Rule은 'Z' 또는 'Y'로 시작하는 것을
기본으로 하고 있으며, INSERT/APPEND와 같은 Keyword는 사용할 수 없도록 필수적인 사항이 있다.
6.1) 전역 변수 정리(Global Variable)- 글로벌 변수
전역 변수라 함은 하나의 프로그램 또는 함수 그룹 내에서 접근할 수 있는 데이터 유형을 의미.
프로그램 내 모든 영역에서 참조하고 변경할 수 있기 때문에 지역성이 없다.
또한 프로그램이 활성화되어 있는 상태에서는 전역 변수는 항상 메모리를 점유하고 있다.
전역 변수 정의는 G로 시작하게 되며 데이터 유형에 따라 다음과 같이 정의함
데이터 타입 | 접두어 | 사용 예 |
필드 (Field) |
V 또는 D | GV_CARRID 또는 GD_CARRID |
구조체 (Structure) |
S | GS_SFLIGHT |
상수 (Constant) |
C | GC_RATE |
인터널 테이블 (Internal Table) |
T | GT_SFLIGHT |
클래스 (Class) |
O | GO_ALVGRID |
레인지 (Range) |
R | GR_CARRID |
데이터 참조 변수 (데이터 오브젝트) |
F | GF_OBJ |
ABAP 프로그램에만 존재하는 PARAMETERS와 SELECT-OPTIONS 변수는
각각 'P','S'와 같이 한자리 접두어만 사용하여 구분하도록 한다.
6.2) 지역 변수 정의(Local Variable)- 로컬 변수
지역 변수는 프로그램의 모듈 내에서만 유효한 변수를 의미한다.
모듈이란 말은 함수나 서브루틴 같이 단위 기능을 구현하기 위해 스크립트를 그룹화 한 것이다.
지역 변수 정의
데이터 타입 | 접두어 | 사용 예 |
필드 (Field) |
V 또는 D | LV_CARRID 또는 LD_CARRID |
구조체 (Structure) |
S | LS_SFLIGHT |
상수 (Constant) |
C | LC_RATE |
인터널 테이블 (Internal Table) |
T | LT_SFLIGHT |
클래스 (Class) |
C | LO_ALVGRID |
레인지 (Range) |
R | LR_CARRID |
데이터 참조 변수 (데이터 오브젝트) |
F | LF_OBJ |
'Easy Abap 2.0' 카테고리의 다른 글
[2주차] Chapter 5 Internal Table Part 1 (0) | 2023.11.16 |
---|---|
[2주차] Chapter 2 Data Type Part 2 (0) | 2023.11.14 |
[1주차] Chapter 7 ABAP Dictionary Part 4 (0) | 2023.11.13 |
[1주차] Chapter 7 ABAP Dictionary Part 4 (0) | 2023.11.08 |
[1주차] Chapter 7 ABAP Dictionary Part 3 (1) | 2023.11.08 |