https://moseory20.tistory.com/48
https://potato98.tistory.com/70
ABAP 개발을 하다보니, Internal Table을 선언하는 문법(구문, 방식)을 다양하게 접하며 헷갈리기 시작했다.
그래서 크게 2가지의 경우로 정리해보았다.
- 실제 DB 기반 Internal Table 선언
- 개발자가 필요한 컬럼들로 구성한 Internal Table 선언
먼저 Internal Table의 기본 정의와 종류에 대해서 설명한 후 선언 방식을 정리하였다.
- Internal Table 이란?
DB의 데이터에 접근 및 조작할 때, Local 메모리 영역에 담아두어 사용하는 것
매번 DB에 직접적으로 접근하지 않아도 되어 부하를 줄일 수 있다.
- Internal Table 종류
- Standard Table
: 순차적으로 Index를 가지는 테이블로 Index로 조작할 수 있다.
Key는 항상 non-unique - Sorted Table
: Key로 자동 정렬되며 Index와 Key로 조작할 수 있다.
Key에 WITH UNIQUE 사용 가능
SORT 명령어 사용 불가능
INSERT는 사용 가능하나 APPEND는 불가능 - Hashed Table
: Index가 없어서 READ TABLE ~ INDEX 구문 사용 불가능
Hash로 계산된 Key값으로 조회할 수 있어, READ TABLE ~ WITH [TABLE] KEY 구문 사용 가능
반드시 Unique하게 선언되어야 한다.
- 실제 DB 기반 Internal Table 선언
#1 (internal) LIKE TABLE OF (DB) WITH HEADER LINE. |
#2 (internal) LIKE (DB) OCCURS 0 WITH HEADER LINE. |
- LIKE TABLE OF 과 OCCURS 0 동시 사용 불가능
: OCCURS 0 -> 메모리 제한을 두지 않겠다는 것(무한대) - WITH HEADER LINE
: Header(Work Area)를 생성할 때 사용하며, 대부분 사용하는 것이 더 편하다.
# WITH HEADER LINE 사용하는 경우(가공 필요X)
LOOP AT (internal) ~ ENDLOOP.
# LOOP를 돌면서 Header가 자동으로 올라와서 반복문 바로 수행
# WITH HEADER LINE 사용하지 않는 경우(가공 필요O)
LOOP AT (internal) INTO (struct) ~ ENDLOOP.
# LOOP를 돌면서 한 line씩 structure에 넣어서 반복문 수행
- 개발자가 필요한 컬럼들로 구성한 Internal Table 선언
TYPES : BEGIN OF t_emp
no type zemplist-empcd,
name type zemtplist-ename,
END OF t_emp.
#structure 둘다 가능
DATA: GS_EMP TYPE T_EMP.
DATA: GS_EMP LIKE LINE OF GT_EMP
# iT
DATA : GT_EMP TYPE OF TABLE OF t_emp with header line.
타입을 쓰던가 data gs로 하던가 큰 상관은 없음(데이터 차지 차이)
#1 DATA : BEGIN OF (struct), (val1) LIKE (table1-val1), (val2) LIKE (table2-val2), ENDOF (struct), (internal) LIKE TABLE OF (struct) [WITH HEADER LINE]. |
#2 DATA : BEGIN OF (struct), (val1) LIKE (table1-val1), (val2) LIKE (table2-val2), ENDOF (struct), (internal) LIKE (struct) OCCURS 0 [WITH HEADER LINE]. |
- #1, #2 : structure를 생성 후 위의 <실제 DB 기반 Internal Table 선언>과 같이 internal table 선언
#3 DATA : BEGIN OF (internal) OCCURS 0, (val1) LIKE (table1-val1), (val2) LIKE (table2-val2), ENDOF (internal), |
- structure와 internal table 구분하지 않고 선언하는 방식으로, 테이블 구조 선언 부에 OCCURS 0 을 사용한다.
피오리에서는 Headerline을 안쓰는게 권고, 근데 운영상 쓰면 적절히 활용
'IT > SAP' 카테고리의 다른 글
[SAP/BC] SAP Source Code 다운로드 (0) | 2022.06.30 |
---|---|
[SAP/BC/TroubleShoot] SAP RFC 계정 잠겼을 때 (0) | 2022.06.10 |
[SAP/ABAP] 메일 전송 펑션 (0) | 2022.03.29 |
[SAP/BC] SAP Developer & Object Keys (0) | 2021.03.04 |
[SAP/ABAP/TroubleShoot]DBIF_DSQL2_SQL_ERROR (0) | 2021.01.07 |