📌 내부 테이블에서 레코드 삭제하기 – DELETE 문
✅ 기본 개념
DELETE 문을 사용하면 내부 테이블에서 특정 레코드 하나 또는 조건에 맞는 여러 레코드를 삭제할 수 있다.
👉 삭제할 때 가장 빠른 방법은 인덱스(index) 를 이용하는 것!!!
① 인덱스를 이용한 삭제 (가장 빠름)
DELETE itab01 INDEX 3.
- 내부 테이블 itab01의 3번째 레코드를 삭제함.
- 헤더 라인(header line) 은 사용하지 않고, 테이블 본문(body) 을 직접 수정함.
- standard table, sorted table에서만 가능 (hash table은 index 개념 없음).
② 루프 안에서 조건을 이용한 삭제
루프를 돌면서 특정 조건에 맞으면 삭제할 수도 있다.
LOOP AT itab01. IF surname = 'Smith'. DELETE itab01 INDEX sy-index. ENDIF. ENDLOOP.
- sy-index는 현재 루프의 반복 횟수를 의미하는 시스템 변수.
- 예: 루프가 5번째 돌고 있다면 sy-index = 5가 됨 → 5번째 레코드를 삭제함.
- 중요: 루프 안에서 DELETE를 사용할 때는 꼭 INDEX sy-index 같이 인덱스를 명시해야 함.
- 그렇지 않으면 ABAP 최신 문법에서는 에러가 날 수 있다.
③ WHERE 조건을 이용한 삭제
삭제할 레코드의 인덱스를 모를 때 사용!
DELETE itab01 WHERE surname = 'Smith'.
- 내부 테이블에서 surname이 'Smith'인 모든 레코드를 삭제함.
- 조건에 맞는 레코드를 하나만 삭제하는 게 아님!
- 일치하는 레코드가 여러 개면 전부 삭제됨.
- 항상 구체적인 조건을 쓰는 게 중요하다.
🔍 요약
방식 | 설명 | 특징 |
DELETE ... INDEX n | n번째 레코드 삭제 | 가장 빠름, index 번호를 알아야 함 |
루프 안에서 sy-index 사용 | 현재 루프 위치의 레코드 삭제 | 루프 조건에 따라 삭제 가능 |
DELETE ... WHERE ... | 조건에 맞는 모든 레코드 삭제 | 조건이 모호하면 모두 삭제됨 |
💡 주의사항
- 루프 밖에서 DELETE를 쓰는 경우, INDEX 또는 WHERE를 반드시 사용해야 함.
- 조건 없이 DELETE만 쓰면 에러 날 수 있음!
- 특히 WHERE 조건을 쓸 때는, 삭제할 대상이 명확하도록 조건을 구체화하는 게 중요함.
'SAP' 카테고리의 다른 글
easy abap 00. 자료형 (0) | 2025.05.06 |
---|---|
SAP ABAP Programming for Beginners - 74 Sort (0) | 2025.04.24 |
SAP ABAP Programming for Beginners - 72 Read (0) | 2025.04.24 |
SAP ABAP Programming for Beginners - 71 Describe & Insert & modify로 변경이 안되는 점 확인하기 (0) | 2025.04.24 |
SAP ABAP INTERNAL TABLE에서 MODIFY쓰기 (0) | 2025.04.24 |