쌓고 쌓다
[ABAP] Internal Table (INSERT, READ, MODIFY, DELETE, LOOP AT) 본문
Internal table에 CRUD를 하기위해서
똑같은 형태의 Structure Variable이 있어야 한다.
CRUD를 위한 이 Structure Variable를 "Work Area"라고 한다.
INSERT
internal table인 gt_flightinfo를 정의하고
LIKE LINE OF 구문으로 위의 테이블에 사용될 work area를 정의한다.
이렇게 internal table 정의와 work area 정의를 많이하는 것 같다.
"Structure변수명-컴포넌트 = 값" 으로 Structure 타입에 값을 채우고
INSERT (Structure) INTO TABLE (Internal table) 로
ROW를 INSERT 할 수 있다.
INSERT 라인에 디버깅을 해보면 값이 Internal Table에 잘 들어갔다.
READ
Internal Table을 선언하고 Work Area도 선언하는 국룰 코드를 써주고.
APPEND TO로 임시 데이터를 하나 넣어줬다.
현재 Internal Table에 데이터가 없기 떄문이다.
데이터베이스의 테이블과 헷갈리면 안된다.
타입이 테이블이기에 데이터가 존재하지 않는 상항이다.
LOOP AT (Internal Table) INTO (Structure) ENDLOOP
위의 구문으로 Internal Table의 모든 Row에 Read 할 수 있다.
Internal Table에 반복문으로 접근할때
인덱스를 구할 수 있는 시스템 변수는 "sy-tabix"이다.
WHERE절을 추가하여 검색할 수 있다.
READ BY INDEX
LOOP AT (InternalTable) INTO (Structure) FROM 1 TO 5.
INDEX 3.
FROM 1 TO 5 또는 INDEX 3과 같이 반복문의 인덱스를 지정할 수 있다.
READ BY KEY
READ TABLE (InternalTable) INTO (Structure) WITH TABLE KEY ...
WITH TABLE KEY의 조건은 AND로 모두 묶여있다.
WITH TABLE KEY 부분에 Table의 Key Component를 모두 써주어야한다.
일부만 써져있다면 에러가 발생한다.
하지만 WITH TABLE KEY가 아닌
TABLE이 생략된 WITH KEY로 사용한다면
모든 Primary Key를 작성하지 않아도 된다.
COPY Internal table
Structure 타입을 복사할때와 마찬가지로
MOVE-CORRESPONDING 키워드를 사용한다.
이때 값의 복사는 동일한 컴포넌트명으로 이뤄진다.
컴포넌트명이 같은곳으로 복사가 되는 것이다.
UPDATE
MODIFY TABLE (InternalTable) FROM (Structure) {<condition>}.
LOOP AT으로 테이블을 돌며 fldate 값을 1씩 증가 시키는 코드이다.
이때 각 Structure에 방문했을때 + 1을 하고
MODIFY 구문을 통해 실제로 업데이트를 시켜주는 과정이 필요하다.
TRANSPORTING은 특정 컴포넌트만 업데이트를할때 사용한다.
특정 컴포넌트만 업데이트하여 성능에 이점을 가져올 수 있다.
디버깅을 찍어보면
위의 FLDATE 값이
1씩 증가했다.
DELETE
DELETE (InternalTable) <condition>
위의 코드로 삭제할 수 있다.
REFRESH (InternalTable).
CLEAR (InternalTable).
FREE (InternalTable).
위의 코드는 테이블의 모든 데이터를 지우는 명령어이다.
REFRESH나 CLEAR는 똑같은 기능이다.
FREE는 모든 데이터를 삭제할 뿐만 아니라 메모리에서 해당 변수를 날린다.
SORT
위의 방법으로 정렬이 가능하다.
DESCENDING, ASCENDING 생략시 기본 값은 ASCENDING이다.
정렬할 컴포넌트를 생략시
테이블의 Key Component를 이용해 정렬한다.
'SAP > ABAP' 카테고리의 다른 글
[ABAP] Screen Element Attribute 변경, Screen System Table (0) | 2025.01.11 |
---|---|
[ABAP] Module Pool, Screen Program (0) | 2025.01.09 |
[ABAP] Local Table Type, Internal Table 선언과 정의 (0) | 2025.01.08 |
[ABAP] Local Structure 선언, ABAP Dictionary (0) | 2025.01.07 |
[ABAP] Global Class, Local Class, Class Builder (0) | 2025.01.06 |