ABAP에서 변수를 선언하는 가장 기본적인 방법은 DATA 문을 사용하는 것입니다. 변수 선언 시 다양한 옵션을 함께 지정할 수 있습니다.
DATA 변수명 TYPE 타입 [LENGTH 길이] [VALUE 초기값] [기타 옵션].
변수 선언 시 타입 선언 안할 경우 기본 C 타입
SAP에서는 변수명에 헝가리안 표기법(Hungarian Notation)을 사용하는 것이 관례입니다:
* 단일 변수 선언
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 키워드를 사용하면 기존 구조체의 모든 필드를 현재 구조체에 포함시킬 수 있습니다. 이는 코드 재사용성을 높이고 구조체 간의 일관성을 유지하는 데 유용합니다.
* 헤더 라인이 있는 테이블 선언
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'. " 헤더 라인 필드 접근
* 구조체 정의
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. " 테이블 읽기
변수 타입을 지정하는 방법에는 두 가지가 있습니다:
DATA: "lv_original TYPE c LENGTH 10,
lv_original(10),
lv_copy LIKE lv_original. " lv_original과 같은 타입으로 선언됨
변수 선언 시 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'.