본문 바로가기
카테고리 없음

ABAP 기초 #1 - DATA TYPE

by SAPortal 2024. 3. 9.

목차

    1. DATA TYPE 이란?

    ABAP (Advanced Business Application Programming) 언어에서 데이터 타입은 변수, 상수, 파라미터 등 데이터의 형태와 특성을 정의합니다. ABAP에서는 다양한 내장 데이터 타입을 제공하며, 사용자 정의 타입을 생성할 수 있는 기능도 지원합니다. 데이터 타입은 데이터의 종류(예: 숫자, 문자열, 날짜)와 메모리 사용량, 값의 범위를 결정합니다. 여기에는 기본 데이터 타입과 복합 데이터 타입이 포함됩니다.

     

     

    2. 예제

    예제1) 기본 데이터 타입

    DATA: LV_NAME TYPE C LENGTH 10 VALUE 'SAP'.
    
    DATA: LV_PHONE_NUMBER TYPE N LENGTH 10 VALUE '1234567890'.
    
    DATA: LV_MESSAGE TYPE STRING VALUE 'Hello, ABAP World!'.

    C (Character): 고정 길이 문자열입니다. LENGTH로 지정된 자릿수만큼 문자를 입력할 수 있습니다.

    N (Numeric Text): 숫자만 포함하는 문자열로, 주로 숫자 형태의 텍스트(예: 전화번호)에 사용됩니다.

    STRING: 가변 길이 문자열입니다. 길이와 상관없이 문자열을 입력할 수 있습니다.

     

    DATA: LV_AGE TYPE I VALUE 30.
    
    DATA: LV_SALARY TYPE P DECIMALS 2 LENGTH 7 VALUE '1234.56'.
    
    DATA: LV_PI TYPE F VALUE '3.14159265'.

    I (Integer): 정수를 저장하는 데 사용됩니다.

    P (Packed Number): 소수점을 포함할 수 있는 숫자로, 주로 수량이나 금액에 사용됩니다.

    F (Floating Point): 부동 소수점 숫자를 저장하는 데 사용됩니다. 이 타입은 정밀도가 매우 높은 계산에서 사용됩니다.

     

    DATA: LV_TODAY TYPE D.
    LV_TODAY = SY-DATUM.
    
    DATA: LV_CURRENT_TIME TYPE T.
    LV_CURRENT_TIME = SY-UZEIT.

    D (Date): 날짜 값을 'YYYYMMDD' 형식으로 저장합니다.

    T (Time): 시간 값을 'HHMMSS' 형식으로 저장합니다.

     

    DATA : LV_VALID TYPE ABAP_BOOL VALUE ABAP_TRUE.
    
    DATA : LV_INVALID TYPE ABAP_BOOL VALUE ABAP_FALSE.

    BOOLEAN: 논리적 참(TRUE) 또는 거짓(FALSE)을 나타냅니다. ABAP_BOOL이라는 논리 데이터 타입을 사용하여 참(ABAP_TRUE)과 거짓(ABAP_FALSE)을 나타냅니다. 'X' (참을 나타냄)와 ' ' (거짓을 나타냄)도 논리적 참과 거짓으로 간주하지만 가독성과 명확성을 위해 ABAP_TRUE, ABAP_FALSE를 사용하는 것이 좋습니다.

     

    DATA : LV_HEX_FIXED TYPE X LENGTH 4 VALUE 'ABCD'.
    
    DATA : LV_HEX_VARIABLE TYPE XSTRING VALUE 'ABCD'.

    X: 타입은 고정 길이의 16진수 데이터를 저장합니다. 메모리 주소, 바이너리 파일의 특정 부분 등 정확한 길이의 바이너리 데이터를 처리해야 할 때 유용합니다.

    XSTRING: 타입은 가변 길이의 16진수 데이터를 저장합니다. 크기가 정해지지 않은 바이너리 데이터나, 처리해야 할 데이터의 크기가 런타임에 결정되는 경우에 적합합니다. 예를 들어, 네트워크를 통해 전송받은 데이터나 파일 내용 등을 저장할 때 사용될 수 있습니다.

     

     

    예제2) 복합 데이터 타입

    TYPES: BEGIN OF TY_EMPLOYEE,
             NAME       TYPE STRING,
             ID         TYPE I,
             DEPARTMENT TYPE STRING,
           END OF TY_EMPLOYEE.
    
    DATA: LS_EMPLOYEE TYPE TY_EMPLOYEE.

    구조체(Structures):  구조체는 ABAP Dictionary에서 정의할 수도 있고, ABAP 프로그램 내에서 로컬 타입으로 정의할 수도 있습니다. 구조체를 사용하면 서로 관련된 데이터를 하나의 단위로 그룹화하여 관리할 수 있습니다.

     

    TYPES: BEGIN OF TY_EMPLOYEE,
             NAME       TYPE STRING,
             ID         TYPE I,
             DEPARTMENT TYPE STRING,
           END OF TY_EMPLOYEE.
    
    DATA: LT_EMPLOYEE TYPE TABLE OF TY_EMPLOYEE.

    내부 테이블(Internal Tables): 내부 테이블은 데이터베이스 테이블의 정보를 읽어와 처리하거나, 프로그램 내에서 데이터의 일시적인 집합을 관리할 때 사용됩니다. 다양한 타입의 데이터를 포함할 수 있으며, 런타임 시점에 행의 추가, 삭제, 검색 등 다양한 데이터 조작이 가능합니다.

     

    3. 변수/상수

    변수는 데이터를 저장할 수 있는 메모리 공간을 나타냅니다. 변수의 값은 프로그램 실행 중에 변경될 수 있으며, 다양한 타입의 데이터(예: 숫자, 문자열, 날짜 등)를 저장할 수 있습니다. ABAP에서 변수는 DATA 키워드를 사용하여 선언합니다.

    위 예제에서 DATA를 저장하기 위해 선언했던게 모두 변수라고 보시면 됩니다.

     

    상수는 초기화된 후 그 값이 변하지 않는 변수를 의미합니다. 즉, 프로그램 실행 도중 상수의 값은 변경될 수 없습니다. 상수는 프로그램 내에서 고정된 값을 나타내는 데 사용되며, CONSTANTS 키워드를 사용하여 선언합니다.

    위 예제에서 변수선언시 DATA : ~~ 이 부분을 CONSTANTS : ~~~ 이렇게 선언하면 상수가 됩니다. 단 상수선언시 항상 초기값이 있어야 합니다.