DATA surname TYPE c LENGTH 15.
surname = 'SMITH'.
IF surname = 'SMITH'.
WRITE: 'You''ve won a car'.
ELSEIF surname = 'BROWN'.
WRITE: 'You''ve won a boat'.
ELSEIF surname = 'JONES'.
WRITE: 'You''ve won a plane'.
ELSEIF surname = 'ANDREWS'.
WRITE: 'You''ve won a house'.
ELSE.
WRITE: 'Unlucky, you go home empty handed'.
ENDIF.
👀 실행 결과
surname = 'SMITH' → "You've won a car"
surname = 'BROWN' → "You've won a boat"
surname = 'ANDREWS' → "You've won a house"
surname = 'KIM' → "Unlucky, you go home empty handed"
*&---------------------------------------------------------------------*
*& Report Z_OPENSQL_1 *
*&---------------------------------------------------------------------*
*& Demonstrates INSERT with Open SQL and SY-SUBRC check
*&---------------------------------------------------------------------*
REPORT z_opensql_1.
* Work area 선언
DATA wa_employees LIKE zemployees.
* 데이터 채우기
wa_employees-employee = '10000006'.
wa_employees-surname = 'WESTMORE'.
wa_employees-forename = 'BRUCE'.
wa_employees-title = 'MR'.
wa_employees-dob = '19921213'.
* INSERT 구문 실행
INSERT zemployees FROM wa_employees.
* 결과 확인
IF sy-subrc = 0.
WRITE 'Record Inserted Correctly'.
ELSE.
WRITE: 'We have a return code of ', sy-subrc.
ENDIF.
💡 보충 설명:
wa_employees는 테이블 구조와 동일한 레코드 단위 메모리 공간
INSERT 구문으로 테이블에 데이터를 넣고,
sy-subrc = 0이면 성공적으로 삽입된 것!
실패 시에는 실패 코드(sy-subrc)를 출력
💡 Work Area란?
**Work Area(워크 에어리어)**는 ABAP에서 내가 작업할 데이터를 임시로 저장해두는 메모리 공간
쉽게 말해, "하나의 레코드(한 줄)"를 담을 수 있는 변수라고 생각하면됨!
보통 테이블 구조와 동일하게 만들어서, 테이블에 값을 넣거나, 테이블에서 값을 가져와서 사용하는 데 쓰임.
SAP 시스템은 동시에 여러 사용자가 동일한 데이터를 접근할 수 있기 때문에, 데이터 무결성과 일관성을 지키기 위해 잠금(Lock)이 필요함!
🔒 1. 데이터 잠금의 종류
구분설명
구분
설명
Database Lock (DB Lock)
DB 자체의 잠금 기능 (단일 SQL 단계에서만 사용됨)
SAP Lock (Logical Lock, ENQUEUE/DEQUEUE)
SAP 자체적인 잠금 개념. 여러 화면/단계 걸친 트랜잭션에 사용됨
🔷 2. 왜 DB Lock만으로는 부족할까?
SAP에서는 한 건의 입력이 여러 화면(SCREEN) 을 통해 이루어짐! 예를 들어:
첫 화면: 이름, 주소
두 번째 화면: 직급, 부서
세 번째 화면: 급여, 통화
그런데 사용자가 2화면까지만 입력하고 취소하면? → 일부 데이터만 DB에 저장되어 불완전한 상태가 될 수 있음 ❌
그래서 SAP는 단순한 DB Lock 대신, 트랜잭션 전체를 묶어서 잠그는 SAP Lock(논리적 잠금) 을 사용한다.
🧩 3. SAP Lock의 특징
특징
설명
✔ SAP 자체 Lock 테이블에 저장
ENQUEUE라는 함수로 설정됨
✔ 트랜잭션이 끝날 때까지 잠금 유지
모든 화면이 완료되기 전까지 DB에 저장하지 않음
✔ 여러 테이블 잠금 가능
전제: 외래키(Foreign Key)로 테이블이 연결되어 있어야 함
✔ ABAP Dictionary에서 Lock Object 생성
개발자가 생성하고 사용하는 구조체 개념
🛠️ 4. SAP Lock Object 구성
ABAP Dictionary(SE11)에서 Lock Object 생성
Lock Object는 자동으로 2개의 Function Module 을 생성:
ENQUEUE_객체명: 잠금 설정
DEQUEUE_객체명: 잠금 해제
개발자가 ABAP 코드에서 이 함수들을 직접 호출
예시:
CALL FUNCTION 'ENQUEUE_EZEMPLOYEES2' EXPORTING employee_id = '10001'.
" ... 작업 수행 후
CALL FUNCTION 'DEQUEUE_EZEMPLOYEES2' EXPORTING employee_id = '10001'.