CS Student’s SAP&Tech Journey✨
[SAP] OPEN SQL 데이터 삽입 / 수정 / 삭제 / 트랜잭션 처리 본문
SAP 시스템에서 데이터를 다루기 위해선 OPEN SQL 문법을 반드시 익혀야 합니다. ABAP에서 사용하는 OPEN SQL은 SAP 내부 데이터베이스 인터페이스를 거쳐 데이터베이스에 맞게 자동으로 변환되기 때문에, 개발자는 일관된 방식으로 DB 작업을 할 수 있는 장점이 있습니다.
이번 포스팅에서는 데이터 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 그리고 트랜잭션 처리(COMMIT / ROLLBACK) 방식까지 실습 예제와 함께 정리해보겠습니다.
✅ OPEN SQL 구조와 개념
- ABAP에서 사용하는 SQL = OPEN SQL
- 내부적으로는 DB 인터페이스 → Native SQL로 자동 변환됩니다.
- 예: SELECT * FROM SCARR → MSSQL, HANA DB 형식으로 변환되어 실행됨
✔️ SY-SUBRC / SY-DBCNT는 각각 성공 여부 / 처리 건수를 확인할 때 사용됩니다.
✔️ 클라이언트는 로컬(예: 400번) 기준으로만 작동합니다. 다른 클라이언트(예: 800번) 접근은 기본적으로 불가합니다.
📌 INSERT - 데이터 삽입
문법
INSERT <테이블> FROM <워크에어리어>.
INSERT <테이블> FROM TABLE <내부 테이블>.
예제
DATA GS_SCARR TYPE SCARR.
GS_SCARR-carrid = 'KA'.
GS_SCARR-carrname = 'Korean Air'.
GS_SCARR-currcode = 'KRW'.
GS_SCARR-url = 'http://www.koreanair.com'.
INSERT ZSCARR_07 FROM GS_SCARR.
WRITE: / SY-SUBRC, SY-DBCNT.
- SY-SUBRC = 0 → 성공, SY-DBCNT = 1 → 한 건 삽입
✔️ 여러 건 삽입 시에는 FROM TABLE 구문을 사용하며, 중복 키 발생 시 오류가 발생할 수 있으므로 ACCEPTING DUPLICATE KEYS 옵션을 함께 사용하면 덤프를 방지할 수 있습니다.
📌 UPDATE - 데이터 수정
문법
UPDATE <테이블> FROM <워크에어리어>.
UPDATE <테이블> SET <필드> = <값> WHERE <조건>.
예제
SELECT SINGLE * INTO GS_SCARR FROM ZSCARR_07 WHERE carrid = 'KA'.
GS_SCARR-currcode = 'EUR'.
UPDATE ZSCARR_07 FROM GS_SCARR.
UPDATE ZSCARR_07 SET url = 'http://www.naver.com'
WHERE carrid = 'AA'.
✔️ 첫 번째 방식은 WorkArea를 통해 전체 레코드를 수정
✔️ 두 번째 방식은 특정 필드만 직접 지정해서 수정
📌 MODIFY - 삽입 또는 수정 자동 판단
문법
MODIFY <테이블> FROM <워크에어리어>.
✅ 해당 키가 존재하면 UPDATE, 없으면 INSERT를 자동으로 수행합니다.
예제
GS_SCARR-carrid = 'LH'.
MODIFY ZSCARR_07 FROM GS_SCARR. " INSERT
GS_SCARR-carrid = 'AA'.
MODIFY ZSCARR_07 FROM GS_SCARR. " UPDATE
📌 DELETE - 데이터 삭제
문법
DELETE <테이블> FROM <워크에어리어>.
DELETE FROM <테이블> WHERE <조건>.
예제
DELETE FROM ZSCARR_07 WHERE carrname = ''.
📌트랜잭션 처리 - COMMIT / ROLLBACK
명시적 처리 (Explicit)
COMMIT WORK. " 데이터베이스에 반영 "
ROLLBACK WORK. " 모든 작업 되돌림 "
묵시적 처리 (Implicit)
- 화면이 바뀔 때 (CALL SCREEN 등)
- REPORT가 끝까지 실행될 때
- RFC 함수 호출 시
- WAIT 문 사용 시
→ 이 경우도 자동으로 COMMIT이 발생하므로, 주의가 필요합니다.
'SAP > ABAP 문법 | Open SQL' 카테고리의 다른 글
[SAP] 집계 함수(Aggregate Function) - MIN, MAX, SUM, COUNT, GROUP BY, HAVING (0) | 2025.02.14 |
---|---|
[SAP] SELECT * / SELECT SINGLE 필드 / SELECT SINGLE * 총정리 (0) | 2025.02.08 |
[SAP] SELECT SINGLE과 SELECT의 차이 / 변수 접두사 정의하기 (0) | 2025.01.31 |
[SAP] 시스템 변수 SY-XXXX 한눈에 정리하기 (0) | 2025.01.30 |
[SAP] 반복문 DO, WHILE (0) | 2025.01.30 |