-
[ABAP] #29 OPEN SQL DMLSAP/ABAP 2026. 1. 11. 15:43
데이터 변경 관련 Open SQL
데이터베이스 테이블의 내용을 변경하는 명령어들은 다음과 같다.
- INSERT (데이터 삽입)
- UPDATE (데이터 수정)
- MODIFY (삽입 또는 수정)
- DELETE (데이터 삭제)
그리고 처리 결과는 다음과 같은 시스템 변수에서 확인할 수 있다.
- sy-subrc : SQL의 실행 성공 여부
- sy-dbcnt : 실제로 처리된 레코드 건수
Client Handling (클라이언트 처리)
SAP는 기본적으로 로그인한 클라이언트(MANDT) 기준으로만 데이터에 접근한다.
다른 클라이언트 데이터를 다뤄야 할 경우 아래 구문을 사용한다.1. CLIENT SPECIFIED
- WHERE 조건에 MANDT를 직접 명시, 그렇지 않으면 전체 클라이언트 조회
SELECT * FROM ztable CLIENT SPECIFIED WHERE mandt = '100'.2. USING CLIENT
- 특정 클라이언트로 접속한 것처럼 동작
- 최신 구문
SELECT * FROM ztable USING CLIENT '100'.
INSERT (데이터 삽입)
- 단일 건
INSERT INTO <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] VALUES <wa>. INSERT <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM <wa>.- 다 건
INSERT <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM TABLE <itab> [ACCEPTING DUPLICATE KEYS].※ 동일키가 존재하면 Insert 불가 -> 덤프 에러남.
ACCEPTING DUPLICATE KEYS를 사용하면 덤프가 일어나지 않고, 중복키 제외하고 나머지 데이터를 추가한다.
UPDATE (데이터 수정)
- 단일 건
UPDATE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM <wa>. UPDATE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] SET <f1> = <g1> <f2> = <g2> ... WHERE <full_qualified_key>.- 다 건
UPDATE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM TABLE <itab>. UPDATE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] SET <f1> = <g1> <f2> = <g2> ... WHERE <condition>.※ Where 조건 항상 확인 !
조건 없으면 전체 업데이트됨.
MODIFY (삽입 또는 수정)
- Modify는 Update와 Insert 기능 둘 다 수행한다.
- 동일키가 존재하면 Update
동일키가 존재하지 않으면 Insert를 수행한다.
- 단일 건
MODIFY <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM <wa>.- 다 건
MODIFY <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM TABLE <itab>.※ 가장 편리하지만 의도치 않은 Insert 발생 가능하기 때문에 주의 !
DELETE (데이터 삭제)
- 단일 건
DELETE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM <wa>. DELETE FROM <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] WHERE <full_qualified_key>.- 다 건
DELETE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM TABLE <wa>. DELETE FROM <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] WHERE <condition>.※ Where 조건 항상 확인 !
조건 없으면 전체 삭제됨.
데이터 원복
DB 변경 작업을 취소하고 이전 상태로 되돌린다.
- ROLLBACK WORK 명령어 사용.
- 메시지 타입 A가 발생하면 자동으로 롤백
... IF sy-subrc <> 0. MESSAGE a... 또는 ROLLBACK WORK. ENDIF.'SAP > ABAP' 카테고리의 다른 글
[ABAP] #31 Number Range (0) 2026.01.16 [ABAP] #30 LUW & Lock (0) 2026.01.16 [ABAP] #28 BDC & Background Job (0) 2026.01.11 [ABAP] #27 프로그램 호출과 데이터 전달 (0) 2026.01.10 [ABAP] #26 ALV Container (1) 2026.01.10