💡 전체 개요
- 프로그램이 단일한 INSERT로 끝나는 게 아니라,
- 반복(loop)을 통해 여러 개의 데이터를 삽입하거나 수정할 때,
- 같은 Work Area를 재사용하는 경우가 많음
- 이때 기존 데이터가 남아있으면 오류가 발생할 수 있으므로, CLEAR를 써서 초기화해줘야함!
🔄 프로그램 흐름
- wa_employees에 데이터 채움
- INSERT로 DB 테이블에 삽입
- SY-SUBRC 체크해서 성공 여부 확인
- 그 다음 작업 전 CLEAR wa_employees 실행! → 이전 값들을 날리고 깨끗한 상태로 만들어줌
- 다시 새로운 데이터를 넣고 INSERT 시도
🧪 실행 중 에러 발생 예시
- 같은 키 값(employee = '10000006')으로 두 번 INSERT 시도하면? → SY-SUBRC = 4가 뜸 (에러) → "Record already exists" 느낌의 실패 코드
💡 CLEAR 사용 방식
문장 | 설명 |
CLEAR wa_employees. | 구조체 전체를 초기화 |
CLEAR wa_employees-employee. | 특정 필드만 초기화 |
💡 전체 구조체를 초기화하는 걸 추천!
📌 디버그 화면에서 확인한 내용
- SY-SUBRC = 4일 때, 오류 메시지 출력
- 이후 CLEAR로 일부 필드를 초기화하고 새로운 값 삽입하면 SY-SUBRC = 0으로 성공
- 보고서에는 "We have a return code of 4" 또는 "Record Inserted Correctly" 출력
🧼 왜 CLEAR가 중요할까?
- ABAP은 변수를 재사용할 때 기존 값이 자동으로 초기화되지 않음
- 예기치 않은 값이 남아있을 수 있음
- 특히 loop나 반복 insert/update 작업에서는 필수!
✅ 핵심 요약
- CLEAR는 변수나 구조체의 값 초기화용
- Work Area를 여러 번 쓰는 경우 반드시 필요함
- SY-SUBRC 값으로 성공/실패 판단 후 대응 로직 작성!
- 실습에서는 employee 필드만 초기화했지만, 보통은 CLEAR wa_employees. 처럼 전체 구조체를 비우는 게 안전함
✅ CLEAR 문이 필요한 이유 (왜 쓰는가?)
CLEAR는 변수나 구조체(work area)의 값을 초기화
즉, 기존에 있던 값들을 다 지워주는 것!
❓ 그럼 왜 굳이 초기화해야 할까?
📌 1. 이전 값이 남아 있어서 잘못된 데이터가 들어갈 수 있기 때문!
예를 들어서...
wa_emp-employee = '1001'. wa_emp-surname = 'KIM'. wa_emp-forename = 'JISOO'.
INSERT zemployees FROM wa_emp.
⬇️ 다음 레코드 만들 때...
CLEAR wa_emp-employee. " employee만 초기화 wa_emp-employee = '1002'.
INSERT zemployees FROM wa_emp.
이러면 surname과 forename은 그대로 KIM, JISOO가 남아있음.
➡️ employee = 1002지만 이름은 여전히 JISOO가 들어감 ❗
즉, 예전 값이 덮어써지지 않으면 그 값 그대로 들어가버림
📌 2. 반복문에서 구조체 재사용할 때 자주 씀
예를 들어 LOOP 돌면서 레코드 계속 INSERT 한다고 하면:
LOOP AT it_data INTO wa_data. CLEAR wa_emp. " 구조체 전체 초기화 => wa_emp-employee = wa_data-id. wa_emp-surname = wa_data-name.
INSERT zemployees FROM wa_emp. ENDLOOP.
CLEAR 안 하면 이전 루프에서 남은 값들이 계속 따라다님... 🥲
✨ 핵심 요약
상황CLEAR 안 써도 됨?추천?
모든 필드를 직접 덮어씀 | O | 괜찮음 |
일부 필드만 변경 | X | CLEAR 꼭 필요 |
반복문에서 구조체 재사용 | X | CLEAR 추천 |
'SAP' 카테고리의 다른 글
SAP ABAP Programming for Beginners - 37 MODIFY문 (0) | 2025.04.10 |
---|---|
SAP ABAP Programming for Beginners - 36 UPDATE문 (0) | 2025.04.10 |
SAP ABAP Programming for Beginners - 34 Insert문 (0) | 2025.04.09 |
SAP ABAP Programming for Beginners - 33 SQL Statements (0) | 2025.04.09 |
SAPSAP ABAP Programming for Beginners - 32 OPEN SQL의 장점 (0) | 2025.04.09 |