1. Data Type
- Data Type 은 데이터 객체를 만들기 위한 틀이며 메모리를 사용하지 않는다.
- Data Type의 종류
> ABAP Predefined Type
ABAP 뿐만이 아니라 다른 프로그래밍 언어에서도 사용되는 기본 Type
> 프로그램 내에서 정의된 Type
아래의 선언방법 예시처럼 프로그래머가 직접 정의한 type
> ABAP Dictionary에서 정의된 Type
ABAP Dictionary ( T-Code 'SE11') 에서 정의된 Type. 이 곳에서 정의된 Type들은 Global 하게 사용이 가능
- Data Type 선언 방법
Using Predefined Types
TYPES: T_CHAR TYPE C LENGTH 10,
T_INT TYPE I,
T_PACKED TYPE P.
Structured Types
TYPES: BEGIN OF TEST_TYPE,
FIRST_NAME TYPE LENGTH 30,
LAST_NAME TYPE LENGTH 30,
AGE TYPE I,
END OF TEST_TYPE.
Table Types
TYPES SPFLI_SORT TYPE SORTED TABLE OF SPFLI WITH UNIQUE KEY CARRID CONNID.
* UNIQUE KEY: UNIQUE한 값을 갖는 필드. 즉 CARRID와 CONNID의 값은 중복되지 않는다.
2. Data Object
- Data Object는 Data Type으로 정의된 객체이며, Data Type에서 지정된 크키만큼 메모리를 사용한다.
- Data Object 종류
- 필드(Field) - 단일 값을 가진 형태, Variable이라고도 불림.
- 구조체(Structure) - 여러 필드의 집합으로 만들어진 1차원 형태.
- 인터널 테이블(Internal Table) - Program내에서 정의되는 가상의 테이블.
- Data Object 선언 방법
CONSTANTS
CONSTANTS T_PACKED TYPE P LENGTH 8 DECIMALS 4 VALUES '5.1234'.
Tables
TABLES: BKPF.
FIELD SYMBOLS
* 김병철 멘토님이 주신 코드.
* SFLIGHT에 있는 데이터를 ITAB_05라는 Internal Table로 저장.
SELECT * INTO TABLE @DATA(ITAB_05) FROM SFLIGHT
DATA FIELD TYPE STRING VALUE 'FLDATE'.
* FIELD SYMBOL 정의
FIELD-SYMBOLS <FS_TAB> TYPE ANY TABLE, " TABLE
<FS_WA> TYPE ANY. " WORK AREA
* ITAB_05에 있는 데이터를 <FS_TAB>에 저장
ASSIGN ITAB_05 TO <FS_TAB>.
* FS_TAB에서 FIELD(FLDATE)가 '20140319'인 데이터를 찾아서 FS_VAL이라는 WORK AREA에 저장함.
READ TABLE <FS_TAB> ASSIGNING FIELD-SYMBOL(<FS_VAL>) WITH KEY (FIELD) = '20140319'.
* SY-SUBRC로 에러 체크. 0이면 OK, 다른 숫자이면 이전에 실행했던 코드에 문제가 있음.
IF SY-SUBRC = 0.
BREAK-POINT.
ENDIF.
* FIELD SYMBOL이란?
ABAP 프로그램 내에서 변수에 동적인 접근이 가능하게 하고 메모리 공간을 점유하지 않는다. FIELD SYMBOL의
이름과 속성은 실행 시점(RUNTIME)에서 결정되며 모든 Data Object에 지정될 수 있다. Type을 명시하여 선언
하거나 명시하지 않고 선언 가능하다. Type이 선언되지 않을 경우, 할당되는 필드(Data Object)의 타입을 그대
로 상속 받는다.
Using Predefined Types
DATA: T_STR TYPE CHAR LENGTH 10 VALUE 'TEST',
T_INT TYPE INT VALUE 14,
T_PACKED TYPE P LENGTH 6 DECIMALS 2 VALUE '45.21'.
* VALUE는 기본값을 지정할 때 사용하며, LENGTH는 필드의 길이, DECIMALS 은 소수점 자리수를 지정할 때 사용.
Reference to Existing Types
DATA : LS_FLIGHT TYPE TY_FLIGHT,
LS_FLIGHT LIKE TY_FLIGHT,
LT_FLIGHT TYPE TABLE OF TY_FLIGHT. "Internal table 선언 - 기본타입은 standard table.
* TYPE과 LIKE의 차이
TYPE은 Domain을 직접 참조하지만, LIKE는 미리 선언된 Data Object와 동일한 Data Object를 사용하며 선언된
필드의 Domain을 참조함. LIKE 구문은 Obsolete syntax로 구분되어져 쓰지 않을 것을 권유한다고 한다.
'SAP > ABAP 기초' 카테고리의 다른 글
(ABAP) REFRESH, CLEAR, FREE에 대하여 (0) | 2021.06.14 |
---|---|
(ABAP) INTERNAL TABLE 정리 - 2 (0) | 2021.06.14 |
(ABAP) Wildcard 사용하기 (0) | 2021.06.13 |
(ABAP) AT FIRST, AT NEW, AT END OF, AT LAST 정리 (0) | 2021.06.13 |
(ABAP) INTERNAL TABLE 정리 - 1 (0) | 2021.06.13 |