ABAP-DATA 선언

유재용·2025년 3월 19일

ABAP

목록 보기
1/11

ABAP 변수 선언

ABAP에서 변수를 선언하는 가장 기본적인 방법은 DATA 문을 사용하는 것입니다. 변수 선언 시 다양한 옵션을 함께 지정할 수 있습니다.

기본 구문

DATA 변수명 TYPE 타입 [LENGTH 길이] [VALUE 초기값] [기타 옵션].

주요 변수 타입

변수 선언 시 타입 선언 안할 경우 기본 C 타입

  • C: 문자열(Character) - 기본 길이 1
  • N: 숫자형 문자(Numeric text) - 0-9 사이의 숫자만 저장
  • I: 정수(Integer) - 4바이트 정수
  • F: 부동 소수점(Float) - 8바이트 부동 소수점
  • P: 고정 소수점(Packed) - 길이와 소수점 지정 가능
  • D: 날짜(Date) - YYYYMMDD 형식
  • T: 시간(Time) - HHMMSS 형식
  • STRING: 가변 길이 문자열
  • XSTRING: 가변 길이 바이너리 데이터

명명 규칙

SAP에서는 변수명에 헝가리안 표기법(Hungarian Notation)을 사용하는 것이 관례입니다:

  • l_: 로컬 변수 (Local)
  • g_: 글로벌 변수 (Global)
  • v_: 일반 변수 (Variable)
  • s_: 구조체 (Structure)
  • t_: 테이블 (Table)
  • r_: 범위 테이블 (Range)
  • cl_: 객체 (Object)

변수 선언 예시

* 단일 변수 선언
DATA: lv_name TYPE c LENGTH 20 VALUE '홍길동',
      lv_age  TYPE i VALUE 30.

* 여러 변수 동시 선언
DATA: BEGIN OF ls_employee,
        id     TYPE n LENGTH 8,
        name   TYPE c LENGTH 20,
        gender TYPE c LENGTH 1,
        salary TYPE p LENGTH 8 DECIMALS 2,
      END OF ls_employee.

* 테이블 선언
DATA: lt_employees TYPE TABLE OF ls_employee.

* 객체 변수 선언
DATA: lcl_grid TYPE REF TO cl_gui_alv_grid.

* 레인지 변수 선언
DATA : lr_name LIKE RANGE OF lv_name.

ABAP에서 구조체에 다른 구조체를 포함(INCLUDE)하는 방법은 다음과 같습니다:

* 첫 번째 구조체 정의
DATA: BEGIN OF ls_address,
        street  TYPE c LENGTH 30,
        city    TYPE c LENGTH 20,
        zipcode TYPE n LENGTH 5,
      END OF ls_address.

* 두 번째 구조체에 첫 번째 구조체 포함
DATA : BEGIN OF ls_employee,
        id      TYPE n LENGTH 8,
        name    TYPE c LENGTH 20,
        gender  TYPE c LENGTH 1.
        INCLUDE STRUCTURE ls_address.  " 구조체 포함
DATA :  salary  TYPE p LENGTH 8 DECIMALS 2,
       END OF ls_employee.

* 이제 ls_employee에는 id, name, gender, street, city, zipcode, salary 필드가 모두 포함됨

INCLUDE STRUCTURE 키워드를 사용하면 기존 구조체의 모든 필드를 현재 구조체에 포함시킬 수 있습니다. 이는 코드 재사용성을 높이고 구조체 간의 일관성을 유지하는 데 유용합니다.

ABAP 테이블 선언 문법

1. 헤더가 있는 테이블 (헤더 라인 테이블)

* 헤더 라인이 있는 테이블 선언
DATA: BEGIN OF lt_employee_header OCCURS 0,  " OCCURS 0는 헤더 라인 테이블을 의미
        "id     TYPE n LENGTH 8,
        "name   TYPE c LENGTH 20,
        "gender TYPE c LENGTH 1,
        id(8)  TYPE n,
        name(20),
        gender,
      END OF lt_employee_header.

* 헤더 라인 테이블 조작 예시
APPEND lt_employee_header.        " 라인 추가
CLEAR lt_employee_header.         " 헤더 라인 초기화
lt_employee_header-id = '12345678'. " 헤더 라인 필드 접근

2. 헤더가 없는 테이블 (내부 테이블)

* 구조체 정의
DATA: BEGIN OF ls_employee,
        "id     TYPE n LENGTH 8,
        "name   TYPE c LENGTH 20,
        "gender TYPE c LENGTH 1,
        id(8)  TYPE n,
        name(20),
        gender,
      END OF ls_employee.

* 내부 테이블 선언 - 표준 테이블
DATA: lt_employees TYPE TABLE OF ls_employee.

* 내부 테이블 선언 - 정렬 테이블 (Sorted Table)
DATA: lt_employees_sorted TYPE SORTED TABLE OF ls_employee
                         WITH UNIQUE KEY id.

* 내부 테이블 선언 - 해시 테이블 (Hashed Table)
DATA: lt_employees_hashed TYPE HASHED TABLE OF ls_employee
                         WITH UNIQUE KEY id.

* 내부 테이블 조작 예시
APPEND ls_employee TO lt_employees.        " 라인 추가
CLEAR ls_employee.                         " 작업용 구조체 초기화
READ TABLE lt_employees INTO ls_employee INDEX 1.  " 테이블 읽기

3. 테이블 유형 비교

  • 헤더 라인 테이블(OCCURS 0): 기존 ABAP 방식으로, 헤더 라인이 있어 임시 작업 영역으로 사용 가능합니다. 하지만 현대 ABAP에서는 점점 사용이 줄어들고 있습니다.
  • 내부 테이블(TYPE TABLE OF): 현대 ABAP에서 권장되는 방식으로, 더 효율적이고 다양한 옵션을 제공합니다.

4. 내부 테이블 타입

  • 표준 테이블(Standard Table): 인덱스로 접근, 순차적 검색, 일반적인 용도
  • 정렬 테이블(Sorted Table): 키 필드로 정렬되어 있어 이진 검색이 가능, 빠른 읽기 작업
  • 해시 테이블(Hashed Table): 해시 알고리즘으로 키를 관리, 매우 빠른 키 기반 접근

TYPE과 LIKE의 차이

변수 타입을 지정하는 방법에는 두 가지가 있습니다:

  • TYPE: ABAP 딕셔너리 객체나 데이터 타입을 직접 참조
  • LIKE: 이미 선언된 다른 변수의 타입을 참조
DATA: "lv_original TYPE c LENGTH 10,
	  lv_original(10),
      lv_copy     LIKE lv_original. " lv_original과 같은 타입으로 선언됨

VALUE 옵션

변수 선언 시 VALUE를 사용하여 초기값을 지정할 수 있습니다:

DATA: lv_count TYPE i VALUE 1,
      "lv_flag  TYPE c LENGTH 1 VALUE 'X',
      lv_flag  VALUE 'X',
      lv_pi    TYPE f VALUE '3.14159'.
profile
ABAP 개발자

0개의 댓글