728x90
반응형
MODIFY
Modify문은 Update와 Insert를 합한 기능으로 키값을 가지고 있는 데이터가 테이블에 존재하면 변경하고 없으면 삽입합니다.
DBTAB(DB테이블) | 삽입과 수정 모두 가능 |
ITAB(인터널 테이블) | 수정만 가능 |
반응형
사용형식
MODIFY itab [FROM wa] [INDEX idx] [TRANSPORTING f1 ... fn].
Index를 가지는 테이블에 대하여 사용할 수 있습니다.
itab | f1, f2, f3 modify 시킬 itab 필드명 |
wa(구조체) | wa를 기술하면 wa의 내용 처리, wa를 기술하지 않으면 Header의 내용 처리 |
idx | Idx를 기술하면 Idx 라인 변경 |
TRANSPORTING | transport를 기술하면 기술되어 있는 필드들만 수정 |
문법: DBTAB
MODIFY DBTAB FROM Data_to_Modify_DBTAB.
FROM 절
- Data_to_Modify_DBTAB은 반드시 DBTAB과 같은 필드 구성을 가진 WA 혹은 ITAB이어야 합니다.
- DBTAB의 키를 이용해 Data_to_Modify_DBTAB의 데이터가 이미 DBTAB에 존재하는지 식별해 존재하면 수정하고, 존재하지 않는 경우엔 삽입합니다.
- Data_to_Modify_DBTAB이 ITAB인지, 혹은 WA인지에 따라 다음과 같이 FROM절을 다르게 작성해야 합니다.
1. WA : ... FROM WA.
2. ITAB: ... FROM TABLE ITAB.
728x90
문법: ITAB
MODIFY ITAB FROM WA TRANSPORTING Name_of_Field_to_Modify Modify_Record_Option
FROM 절
- Data_to_Modify_ITAB은 반드시 ITAB과 같은 필드 구성을 가진 WA 혹은 ITAB이어야 합니다.
- 만약 ITAB이 Header Table이고, 헤더를 이용해 바디를 수정하는 경우라면 FROM절을 생략할 수 있습니다.
TRANSPORTING 절
- ITAB의 특정 필드만 바꾸고 싶을 때 사용합니다.
- 바꾸고 싶은 필드가 2개 이상일 때는 띄어쓰기를 이용해 Name_of_Field_to_Modify를 구분합니다.
Modify Reord Option
- Data_to_Modify_ITAB을 이용해 ITAB의 어떤 레코드를 수정할지 명시합니다.
- 적지 않아도 문법 검사에서 통과되지만 LOOP문 밖에서 적지 않고 실행했을 경우엔 런타임 에러가 발생하니 주의해야 함.
하나의 레코드만 변경: ... INDEX Index_of_Record_to_Modify ...
여러 레코드 변경: ... TRANSPORTING Clause WHERE Condition_to_Modify ...
- WHERE 절
- 하나의 WA로 동시에 여러 레코드를 바꿀 때 사용할 수 있습니다. 단 이땐 TRANSPORTING절을 반드시 사용해야 합니다.
- INDEX 절
- LOOP문 내부에서 LOOP를 진행하고 있는 ITAB을 대상으로 MODIFY문을 실행할 때는 생략할 수 있으며, 생략 시 'INDEX SY-TABIX'로 적용됩니다.
참고
728x90
반응형
'🧑💼 SAP > ABAP' 카테고리의 다른 글
[SAP ABAP] 데이터베이스 구조 OPEN SQL vs NATIVE SQL (1) | 2023.11.03 |
---|---|
[SAP ABAP] SELECT SINGLE 이란 (0) | 2023.11.03 |
[SAP ABAP] TYPE과 LIKE 차이 (0) | 2023.10.04 |
[SAP ABAP] ABAP Dictionary란? (Database Table) (0) | 2023.08.29 |
[SAP ABAP] 인터널 테이블(Internal Table)이란? (0) | 2023.08.24 |