본문 바로가기
Study/SAP

[SAP] 2. Data Type

by J_Kkikki 2026. 5. 27.

Data Type(데이터 타입) : 프로그램에서 사용할 수 있는 데이터의 타입을 정의

Data Variable(데이터 변수)(=Data Object) : 데이터 타입을 참고하여 값을 저장할 수 있는 변수

 

[Data Type]

TYPES a TYPE type.		
TYPES b LIKE variable.

 

[Data Variable]

DATA: gv_var TYPE type.
DATA: gv_var LIKE variable.

LIKE : 이미 생성된 변수와 같은 데이터타입/변수 선언

TYPE : 데이터 타입을 이용해서 변수/타입 정의

 

 

 

+) inline(인라인) 문법

: ABAP 7.4 이후, 값을 할당하면서 동시에 변수를 선언하는 inline(인라인) 문법이 도입

DATA: gv_var TYPE < LENGTH 4.
gv_var = 'abap'.
DATA(gv_var) = 'abap'.

 

 

 

데이터 타입의 종류

1. Predefined ABAP Type (기본 데이터 타입)

 

2. Local Data Type (프로그램 내의 로컬 타입)

* 변수 타입

TYPES t_type TYPE C LENGTH 10.

 

* 구조체 타입

TYPES: BEGIN OF t_str,
	emp_no TYPE c LENGTH 10,
    emp_name TYPE c LENGTH 20,
    END OF t_str.

 

3. Global Daya Type (글로벌 타입)

tcode: SE11 - TABLE, Data Type, Data Element, Structure, Table Type

이것들은 모든 프로그램에서 사용할 수 있는 데이터 타입이다.

 

 

 

+)분기문

* IF-ELSEIF-ELSE

IF p_val = 100.
	gv_grade = 'A+'.
ELSEIF p_val >= 90.
	gv_grade = 'A'.
ELSE.
	gv_grade = 'F'.

 

* COND-(WHEN-THEN)

DATA(gv_grade) = COND string(   WHEN p_val = 100 THEN 'A+'
				WHEN p_val >= 90 THEN 'A'
                                ELSE 'F'
                            ).

 

* CASE-WHEN-WHEN OTHERS

CASE p_val.
    WHEN 'A+' OR 'A'.
    	WRITE: '통과입니다.'.
    WHEN 'B'.
    	WRITE: '보통입니다.'.
    WHEN OTHERS.
    	WRITE: '다시 수강하세요.'.
ENDCASE.

 

* SWITCH (WHEN-THEN)

DATA(gv_text) = SWITCH string( p_val
			WHEN 'A+' OR 'A' THEN '통과입니다.'.
                    	WHEN 'B' THEN '보통입니다.'.
                    	ELSE '재수강하세요.'.
               ).

 

 

ABAP 네이밍 룰

전역변수 g~
지역변수 l~
필드 ~v_, ~d_
구조체 ~s_
상수 ~c_
인터널 테이블 ~t_
클래스 ~o_
range ~r_
데이터 참조 변수(데이터 오브젝트) ~f_

 

 

+) 이전에 발생한 덤프 에러 조회 : tcode:ST22

=> Try-Catch

 

여러가지 문법

문자열 연결

CONCATENATE 'Hello' 'ABAP' INTO gv_val1. 	'방법1
gv_val2 = 'Hello' && 'ABAP'.			'방법2

 

탬플릿 문자열 : 파이프 기호(|) 안에 문자열을 넣고, 중괄호 안에 변수를 넣는다. 탬플릿 문자열 연결은 &로 한다.

gv_val = | Hello | & | my name is {gv_val} |.

 

ALPHA Conversion Routine : 긴 문자열을 화면에 보일 때 간략하게 변환

DATA lv_input  TYPE char10 VALUE '123'.
DATA lv_output TYPE char10.

" External → Internal (0 채우기)
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    input  = lv_input
  IMPORTING
    output = lv_output.
" 결과: lv_output = '0000000123'

" Internal → External (0 제거)
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  EXPORTING
    input  = lv_output
  IMPORTING
    output = lv_input.
" 결과: lv_input = '123'

 

간단하게!

" External → Internal (0 채우기)
lv_output = |{ lv_input ALPHA = IN WIDTH = 10 }|.
" 결과: '0000000123'

" Internal → External (0 제거)
lv_output = |{ lv_input ALPHA = OUT }|.
" 결과: '123'

 

+) help : 키워드에 커서를 올려 두고 F1

 

 

 

시스템 일자 변수 sy-datum, sy-datlo의 차이점

SAP 시스템의 표준 시간대 시스템 설정 : Tcode: SPRO

sy-datum : SPRO(IMG)에서 설정한 System time zone 기준으로 시간 설정

sy-datlo : SPRO(IMG)에서 설정한 User's time default time zone / 사용자 프로파일의 Personal Time zone 기준으로 시간 설정

 

 

 

정규식(REGEX)

: 일정한 규칙으로 문자열을 검색해 치환할 목적으로 사용하는 공통 표현식

= 일정한 규칙이 있는 문자열 검색!

 

 

 

프로그램 내의 로컬 타입

TYPE 선언 : 그 프로그램에서만 특별한 타입으로 사용

TYPES t_char10(10) TYPE c.
DATA gv_val1 TYPE t_char10.

gv_val1 = '12345hello'.

 

 

Structure Type 선언 : 여러 개의 필드로 이루어진 구조체 타입 선언

TYPES: BEGIN OF t_ren,
    name TYPE c LENGTH 20,
    country TYPE c LENGTH 15,
    city TYPE c LENGTH 10,
END OF t_ren.

DATA gs_people TYPE t_ren. 		'구조체 타입 선언

gs_people-name = '홍길동'.
gs_people-country = '대한민국'.
gs_people-city = '서울'.

 

DATA로 바로 구조체 변수 선언도 가능~

DATA: BEGIN OF t_ren,
    name TYPE c LENGTH 20,
    country TYPE c LENGTH 15,
    city TYPE c LENGTH 10,
END OF t_ren.

gs_people-name = '홍길동'.
gs_people-country = '대한민국'.
gs_people-city = '서울'.

 

 

INCLUDE TYPE 선언 : 구조체 타입 안에 타입 넣음