-
01. SAP Data Type 01SAP 2021. 7. 18. 16:05
01. data type & data variable
data type
- 프로그램에서 사용할 수 있는 데이터의 타입 정의한다.
TYPES dtype [TYPE type|LIKE dobj]
data variable
- data type을 참고하여 값을 정할 수 있는 변수이다.
TYPES dtype [TYPE type|LIKE dobj]
data 변수
□
구조체
□□□
internal table
□□□
□□□
□□□
□□□02. data type의 종류
ABAP 프로그램은 3가지 그룹의 Data Type을 사용할 수 있다.
Data Type- Predefined ABAP type
- kernel 레벨에서 정의되어 있는 기본 데이터 타입이다.
- C, JAVA의 (c, f, l) 타입과 같이 이미 정의되어 있는 데이터 TYPE이다.
- Local Data Type in Program
- ABAP 프로그램 내에서 Predefined ABAP Type을 이용하여 Local Type을 생성한다.
- 또한 Predefined ABAP Type을 조합하여 여러 필드가 추가된 Structure 타입을 정의하여 사용할 수 있다.
TYPES dtype [TYPE type|LIKE dobj]
- Global Data Type in ABAP Dictionary
- 모든 ABAP 프로그램에서 사용할 수 있는 Global Data Type이다.
- ABAP Dictionary Data Type은 ABAP 프로그램 내에서 TYPE 구문을 이용할 수 있다.
Table(Table Field) Data Type Data Element Structure Table Type
과 같은 ABAP Dictionary Object를 이용해 프로그램 내에 Data Type 또는 Data Variable을 선언하게 된다.
TYPES : types TYPE table. DATA : gv_data LIKE table-field ....
Type Group을 선언하여 TYPE을 그룹화하여 사용할 수 있다.
TYPE-POOLS hktst ...
03. Data Variable 선언
- Predefined ABAP Type 이용하여 변수 선언
ABAP에서 제공되는 기본 타입을 이용하여 데이터를 선언하는 방식이다.
DATA : gv_num TYPE i, * int gv_decj TYPE f, * float gv_date TYPE d, gv_time TYPE t, gv_text1 TYPE c, * char gv_text2(2) TYPE c, gv_longtext TYPE string.
TYPE i, * int
TYPE f, * float
TYPE d,
TYPE t,
TYPE c, * char
TYPE c,
TYPE string.
위는 ABAP에서 제공되는 기본 타입(Predefined ABAP Type)- 프로그램의 Local Type을 이용하여 변수 선언
Local 프로그램에서 자주 사용하게 되는 데이터 및 구조 TYPE으로 선언하여, 프로그램 내에서만 ABAP 기본 데이터 타입처럼 사용할 수 있다.
TYPES : BEGIN of t_struct, col1 TYPE c, col2 TYPE i, col3 TYPE d, END of t_struct. * Local TYPE 선언 DATA : gs_struct TYPE t_struct, gv_var LIKE gs_struct-col1.
- ABAP Dictionary의 Type을 이용하여 변수 선언
ABAP Dictionary(Table, Structure, Data Element 등)는 모든 프로그램에서 선언하여 사용할 수 있다.
DATA : gv_carried TYPE s_carr_id, gv_connid TYPE sflight-carrid, gv_matnr TYPE mara-matnr. * Type in ABAP Dictionary
TYPE s_carr_id,
TYPE sflight-carrid,
TYPE mara-matnr.
위는 ABAP Dictionary TYPE04. DATA 구문
데이터 변수를 선언할 때는 사용하는 구문이다. 변수명은 언더라인(_) 기호를 포함하여 30자까지 가능하다.
- TYPE type -> 한 번에 해당 타입으로 변수 여러 개 정의 가능
데이터 변수의 타입을 정의한다. 3가지 타입 유형이 TYPE 구문 다음에 올 수 있다.
DATA : gv_num TYPE i.
콜론(:) 기호는 동일한 명령어를 쉼표(,)로 구분하여 마침표(.)를 만날 때가지 실행하도록 한다.
명령어를 수행하고 동일한 기능을 여러 번 실행할 수 있도록 해준다.
예를 들어, 다음과 같이 콜론(:) 기호를 이용하여 변수 2개를 한번에 선언할 수 있다.
ex)DATA gv_num1 TYPE I, DATA gv_num2 TYPE I.
↓
DATA : gv_num1 TYPE I, gv_num2 TYPE I.
- LIKE num -> 같은 타입의 변수를 LIKE 하나로 쉽게 정의
앞에서 생성한 Data Variable인 gv_num1과 동일한 타입의 변수를 선언할 때 사용된다.
타입이 있는 모든 데이터 변수(Field, Parameter, Structure, 시스템 변수..)를 사용할 수 있다.DATA : gv_num2 LIKE gv_num1.
- 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.
- LENGHT n
필드의 길이를 설정한다. C, N, P, X 타입에만 사용할 수 있다.
DATA : gv_num TYPE n LENGTH 2.
- DECIMALS n
Data Type P에서만 사용 가능하며 1~14 사이의 소수 자리 수를 설정한다.
DATA : gv_num TYPE p DECIMALS 3.
ex)
REPORT Z02_01. TYPES t_var TYPE c LENGHT 20. DATA gv_var TYPE t_var. gv_var = 'Hello ABAP'. WRITE gv_var.
-> t_var이란 Local Type 선언, 이 타입 참고해 gv_var이라는 Data Variable 선언.
프로그램 내에서 자주 사용되는 TYPE은 Local Type을 정의하는 것이 효율적.
Local Type을 먼저 선언할 필요는 없다.
즉, 변수 선언 시 바로 TYPE을 지정할 수 있다.DATA gv_var TYPE c LENGTH 20.
abap 기본 문법
- ABAP 프로그램의 한 문장은 마침표 기호(.)로 마무리한다.
- WRITE gv_val.
- 프로그램 기능을 설명하는 주석은 다음 2가지가 존재한다
- *기호는 한 라인 전체를 주석처리한다.
- *This is comment
- " 기호는 뒷부분의 문자열을 주석처리한다.
- WRITE gv_val. "Part of line is comment.
- 문자열은 ' ' 기호로 처리한다.
- gv_val = 'Easy ABAP'.
- 명령어는 공백(SPACE)를 두고 처리한다.
- gv_val ='Easy ABAP'. => X
- gv_val = 'Easy ABAP'. => O
05. ABAP Naming Rule
모든 프로그램 언어에서는 가독성을 높이고, 변수 간의 충돌을 피하며 프로그램의 구조적 통일성을 위하여 Naming Rule을 정할 것을 권고하고 있다.
SAP에서는 고객사에서 사용할 수 있는 ABAP Dictionary의 Naming Rule은 'Z' 또는 'Y'로 시작하는 것을 기본으로 하고 있으며, INSERT/APPEND와 같은 Keyword는 사용할 수 없도록 하는 필수적인 사항이 있다.
ABAP 프로그램에서 사용할 수 있는 변수명은 언더라인(_) 기호를 포함하여 30자까지 가능하다. 언더바 뒤의 마지막 단어는 어떤 역할을 하는지 의미를 요약하게 된다.- 네이밍룰
- 범위(전역/로컬) + 데이터유형(변수/구조) + _ + 의미요약
- 사용 예
- GS_SFLIGHT
- 프로그래밍
- DATA : GS_SFLIGHT TYPE SFLIGHT.
05.1 전역 변수 정의 (Global Variable)
전역 변수 - 하나의 프로그램 또는 함수 그룹 내에서 접근할 수 있는 데이터 유형을 의미
프로그램 내 모든 영역에서 참조하고 변경할 수 있기 때문에 지역성이 없다.
프로그램이 활성화되어 있는 상태에서는 전역 변수는 항상 메모리를 점유하고 있다.
전역 변수 정의는 G로 시작하게 되며 데이터 유형에 따라 다음과 같이 정의하여 사용한다.필드 V or D GV_CARRID or GD_CARRID DATA GV_SFLIGHT TYPE S_CARR_ID. or DATA GD_SFLIGHT TYPE S_CARR_ID. 구조체 G GS_SGLIGHT DATA GS_SFLIGHT TYPE SFLIGHT. 상수 C GC_RATE CONSTANTS GC_RATE TYPE | VALUE '3.14'. 인터널 테이블 T GT_SFLIGHT DATA GT_SFLIGHT TYPE TABLE OF SFLIGHT. 클래스 O GO_ALVGRID DATA GO_ALVGRID TYPE REF TO CL_DALV_TABLE. RANGE R GR_CARRID RANGES GR_CARRID FOR SFLIGHT-CARRID. 데이터 참조 변수 (데이터오브젝트) F GF_OBJ DATA GF_OBJ TYPE REF TO OBJECT. 구조체 - TYPE 그냥 타입.
인터널 테이블 - TYPE TABLE OF 타입.
참조 - TYPE REF TO 참조대상.접두어를 3자리로
범위(전역/로컬) + 데이터유형(변수/구조) + 데이터성격 + _ + 의미요약
ex)
GVF_CARRID -> G : 전역 + V : 필드 + F : 플래그성격
그러나 변수 선언 시 변수 길어지면 효율성과 생산성에 도움이 되지 않는다.
데이터 성격까지 파악하고자 한다면 GV_FXX(플래그변수), GV_IXX(인덱스변수), GV_DXX(날짜변수)와 같이 _ 문자 뒤에 첫 째 자리에서 구분하는 것도 좋은 방법이다.
ABAP 프로그램에만 존재하는 PARAMETERS와 SELECT-OPTIONS 변수는 각각 'P', 'S'와 같이 한 자리 접두어만 사용하여 구분하도록 한다.PARAMETERS : P_CARRID TYPE S_CARR_ID. SELECT-OPTIONS : S_CARRID FOR SFLIGHT-CARRID.
05.2 지역 변수 정의 (Local variable)
지역 변수는 프로그램 모듈 내에서만 유효한 변수를 의미한다.
모듈이란 말은 함수나 서브루틴같이 단위 기능을 구현하기 위해 스크립트를 그룹화한 것이다.필드 V or D LV_CARRID or LD_CARRID DATA LV_SFLIGHT TYPE S_CARR_ID. or DATA LD_SFLIGHT TYPE S_CARR_ID. 구조체 S LS_SFLIGHT DATA LS_SFLIGHT TYPE SFLIGHT. 상수 C LC_RATE CONSTANTS LC_RATE TYPE | VALUE '3.14'. 인터널 테이블 T LT_SFLIGHT DATA LT_SFLIGHT TYPE TABLE OF SFLIGHT. 클래스 O LO_ALVGRID DATA LO_ALVGRID TYPE REF TO CL_SALV_TABLE. RANGE R LR_CARRID RANGES LR_CARRID FOR SFLIGHT-CARRID. 데이터 참조 변수 (데이터 오브젝트) F LF_OBJ DATA LF_OBJ TYPE REF TO OBJECT. 05.3 Naming Rule 점검
REPORT Z02_02. DATA : VAL TYPE C.
위와 같이 변수 하나 선언한 후 프로그램을 활성화시킨다.
=> Invalid Name Val for DATA(Global)이라는 구문에서 Global 영역의 DATA에 이름에 문제가 있음을 알 수 있다.'SAP' 카테고리의 다른 글
select-options (0) 2021.11.03 함수에 변수 사용하기 (0) 2021.09.28 SAP GUI 실습 화면과 같도록 테마 설정하기 (0) 2021.08.24 01. SAP Data Type 02 (0) 2021.07.27