CS Student’s SAP&Tech Journey✨

[SAP] OPEN SQL 데이터 삽입 / 수정 / 삭제 / 트랜잭션 처리 본문

SAP/ABAP 문법 | Open SQL

[SAP] OPEN SQL 데이터 삽입 / 수정 / 삭제 / 트랜잭션 처리

인포마틱 2025. 3. 28. 15:50

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이 발생하므로, 주의가 필요합니다.