구조화된 데이터 객체(Structured Data Objects)란?
구조체 예제:
TYPES: BEGIN OF ty_employee,
id TYPE i,
name TYPE string,
age TYPE i,
END OF ty_employee.
DATA: ls_employee TYPE ty_employee.
" 구조체 필드 값 설정
ls_employee-id = 1.
ls_employee-name = 'John Doe'.
ls_employee-age = 30.
" 구조체 데이터 출력
WRITE: / 'ID:', ls_employee-id,
/ 'Name:', ls_employee-name,
/ 'Age:', ls_employee-age.
내부 테이블(Internal Tables)란?
내부 테이블의 유형:
내부 테이블 정의 및 사용 예제:
TYPES: BEGIN OF ty_employee,
id TYPE i,
name TYPE string,
END OF ty_employee.
DATA: lt_employees TYPE TABLE OF ty_employee,
ls_employee TYPE ty_employee.
" 데이터 삽입
ls_employee-id = 1.
ls_employee-name = 'Alice'.
APPEND ls_employee TO lt_employees.
ls_employee-id = 2.
ls_employee-name = 'Bob'.
APPEND ls_employee TO lt_employees.
" 데이터 출력
LOOP AT lt_employees INTO ls_employee.
WRITE: / 'ID:', ls_employee-id, 'Name:', ls_employee-name.
ENDLOOP.
내부 테이블 작업
APPEND, INSERT.DELETE.MODIFY.SORT.READ TABLE.ABAP에서 데이터베이스 접근
단일 레코드 조회:
DATA: lv_name TYPE string.
SELECT SINGLE name
INTO lv_name
FROM zemployee
WHERE id = 1.
WRITE: / 'Employee Name:', lv_name.
SINGLE: 조건에 맞는 첫 번째 레코드만 조회.다중 레코드 조회:
TYPES: BEGIN OF ty_employee,
id TYPE i,
name TYPE string,
END OF ty_employee.
DATA: lt_employees TYPE TABLE OF ty_employee.
SELECT id name
INTO TABLE lt_employees
FROM zemployee
WHERE age > 30.
LOOP AT lt_employees INTO DATA(ls_employee).
WRITE: / 'ID:', ls_employee-id, 'Name:', ls_employee-name.
ENDLOOP.
INTO TABLE: 여러 레코드를 내부 테이블로 가져옴.투명 테이블(Transparent Tables)이란?
투명 테이블 생성 절차:
투명 테이블 사용 예제:
INSERT INTO zemployee VALUES (1, 'John', 30).
SELECT * FROM zemployee INTO TABLE lt_employees.
외래 키(Foreign Keys)란?
외래 키 설정 절차:
예제:
CUSTOMER_ID, CUSTOMER_NAME.ORDER_ID, CUSTOMER_ID, ORDER_DATE.CUSTOMER_ID 필드에 ZCUSTOMER의 CUSTOMER_ID를 참조하는 외래 키 정의.입력 검증 예제:
INSERT INTO zorder VALUES ('O123', 'C001', '2025-01-25').
" C001이 ZCUSTOMER 테이블에 존재하지 않으면 입력 거부.