ABAP Data Type

2025. 3. 19. 18:34ABAP


1. Data Type

: 말 그대로 사용되는 data 종류

→ C를 예로 들어보면 int, float, double 이런 걸 의미!

  • Type:

1. Predefined Data Type: ABAP에서 미리 정의된 데이터 유형

      1. 숫자 (I, P, F)
      2. 문자 (C, String)
      3. 날짜 (D, T)

2. Global Data type in ABAP Dictionary

: ABAP Dictionary 에 정의된 db table, table field, data element 의 유형을 참조해서 사용 가능

→ 모든 ABAP 프로그램에서 사용 가능한 Global Data Type

3. Local Data Type in program

: 기본 데이터 유형 (predefined data type)을 조합해서 ABAP 프로그램 내에서 새로운 Data Type을 정의할 수 있음

  • 선언 방법:

이미 정의되어있는 ABAP Data Type (= Predefined Data Type)을 사용하여 해당 프로그램 소스 코드 내에서 TYPES를 이용해 LOCAL DATA TYPE 정의

TYPES DATA_TYPE [TYPE type | LIKE dobj]

→ ex)

TYPES : t_city(20) TYPE c, " 20자 길이의 도시 이름 유형

t_price TYPE p DECIMALS 2, " 소수점 2자리 포함 가격 유형

t_customer LIKE zcustomer. " zcustomer 구조체와 동일한 유형

2. Data Variable

: 말 그대로 변수!

→ C를 예로 들면 int a, char message

  • 변수 선언 방법

1. Predefined ABAP Type을 이용해 변수 선언

: ABAP에서 제공되는 기본 타입 이용해 데이터 선언

ex 1.

DATA lv_name TYPE string. " 가변 길이 문자열

DATA lv_city(20) TYPE c. " 고정 길이 문자열 (최대 20자)

 

ex 2.

DATA: lv_name TYPE string, " 고객 이름

lv_age TYPE i, " 고객 나이

lv_email TYPE string, " 고객 이메일

lt_orders TYPE TABLE OF zorder. " 고객 주문 내역 테이블

→ 아래는 table 참조 (local)

2. 프로그램의 local type을 이용한 변수 선언

: 프로그램 내부에서 TYPES를 이용해 data 및 structure를 미리 선언 후 새롭게 define해 사용하기

C에서 code내에서 위쪽에서 int, string, char등이 들어있는 structure를 선언하고 다시 밑에서 새로운 이름으로 define하는 것과 동일

ex.

// 1. 구조체 정의

struct Person {

char name[50];

int age; };

...

struct Person Person_t;

ABAP ex.

TYPES : BEGIN OF t_person,

name TYPE string,

age TYPE i,

END OF t_person. *struct 선언

DATA : ls_person TYPE t_person.

structure 선언 방법은?

TYPES : BEGIN OF structure_이름,

변수_이름 TYPE 변수_종류,

변수_이름 TYPE 변수_종류,

END OF structure_이름

3. ABAP Dictionary의 Type활용해 변수 선언

: ABAP Dictionary에 있는 Table, Structure, Data Element 등을 가져와 선언 가능

DATA: gv_carrid TYPE s_carr_id,

gv_connid TYPE sflight-carrid,

gv_matnr TYPE mara-matnr.

3. 변수 선언 방법

  1. 기본 선언 방법

DATA gv_num1 TYPE I, DATA gv_num2 TYPE I.

➕ 정리

DATA : gv_num1 TYPE I, gv_num2 TYPE I.

: 를 사용하면 더 편한듯 ~ (오노 여기 너무 깨져버려...)

2. LIKE

: 이전에 선언한 변수와 동일한 TYPE을 사용하고 싶을 때 사용

ex.

DATA : gv_num2 LIKE gv_num1

3. VALUE

: 변수에 값을 저장하고 싶을 때 사용

➕ VALUE IS INITIAL은 default로 설정된 값으로 초기값 설정할 수 있게 해줌 (생략 가능)

Constants 변수의 경우 VALUE로 초기값 설정 필수

ex.DATA: gv_nume 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 타입만 사용 가능 !

➕ C: character

엇 그렇다면 c와 string의 차이는 뭘까요?

⇒ c는 선언 시 LENGTH를 통해 길이를 명시. So, 고정된 길이를 가짐. 성능은 빠름 !

⇒ string은 동적으로 메모리를 할당. 길이를 명시하지 않아도 됨 ~ 성능이 C에 비해 상대적으로 느림. (malloc가 내장되어있다는 느낌 !)

➕ N: 0-9, 공백, 부호(+,-) ⇒ 숫자 연산보다는 숫자 형태의 문자열을 포함 ex. 전화번호, 우편번호

➕P: 소수점 숫자

DECIMALS : 소수점 이하 자릿수 지정할 때 사용

➕X: 16진수 (0-9, A-F)

ex. binary 데이터, 시스템 내부 값

🖥️ 코드 적어보기

  1. T-Code: SE80

2. Package 선택

3. Package 선택 후 Create > Program

4. program 이름 입력

5. 코드 작성 : 뭘 작성해보는게 좋을까 고민중 역시 처음에는 hello world지 !

4. ABAP 기본 문법

  1. 코드 .로 마무리.
  2. 주석 처리 :
    1. * : 1 라인 주석 처리
    2. : 코드 뒷 부분에서 주석 처리
  3. 문자열은 ''
  4. 명령어 사이는 SPACE로

 

5. ABAP Naming Rule

: 시스템 내부 룰을 따라야 함.

일반적으로 지켜지는 rule을 한번 알아보자 !

  • Variable 정의 rule
데이터 타입
Prefix
사용 예 (Glo.)
사용 예 (Loc.)
필드
V 또는 D
GV_CARRID (D)
LV_CARRID
구조체
S
GS_SFLIGHT
LS_SFLIGHT
상수
C
GC_RATE
LC_RATE
인터널 테이블
T
GT_SFLIGHT
LT_SFLIGHT
클래스
O
GO_ALVGRID
LO_ALVGRID
RANGE
R
GR_CARRID
LR_CARRID
데이터 참조 변수
F
GF_OBJ
LF_OBJ

6. Function

: 왠지 쓸 수도 있는 함수를 적어본다

<string 관련 함수>

명령어
의미
FIND
해당 글자 있으면 시스템 변수 SY-SUBRC = 0 반환
REPLACE
문자 대체
TRANSLATE
대소문자를 변경
SHIFT
왼쪽으로 한 칸씩 이동
CONDENSE
공백을 제거하여 왼쪽으로 정렬 NO-GAPS와 주로 사용
OVERLAY
character의 빈 곳을 채우고, 채워져 있는 곳을 덮어쓰지 않음
CONCATENATE
두 문자열 합치기
SPLIT
기준 문자를 중심으로 나누기
존재하지 않는 이미지입니다.

노션에서 블로그로 옮기니까 다 깨진다 화가난다.

시간이 낭비돼서 짜중나!

이제는 개발한것만 올리겟어. 흥.