1. Internal Table
프로그램 내에서 정의항 사용할 수 있는 Local Table 이다.
ABAP 프로그램에서 가장 장점 인터널 테이블과 디버깅
ABAP 에서 스트럭쳐 선언
TYPE: BEGIN OF s_type,
NO(60) TYPE C,
NAME(10) TYPE C,
PART(16) TYPE C,
END OF s_type.
DATA: sawon type s_type. -> work area선언??
2. Internal Table 생성
-> Local Table Type을 이용한 인터널 테이블 생성
TYPES: BEGIN OF s_type,
no (6) TYPE c ,
name ( 10) TYPE c ,
part(16) TYPE c ,
END OF s_type. => 구주체 타입을 생성, create
TYPES t_itab TYPE STANDARD TABLE OF s_type. => 인터널 테이블을 선언
DATA gt_itab TYPE t_itab. => 인터널 테이블 생성
TYPES: begin of s_type,
no(6) type c,
name(10) TYPE c,
part(16) TYPE c,
END OF s_type.
data: gt_itab TYPE TABLE OF s_type
WITH NON-UNIQUE KEY no WITH HEADER LINE .
gt_itab-no = '0001'.
gt_itab-name = 'Easy ABAP'.
GT_ITAB-PART = 'SAP TEAM'.
APPEND GT_ITAB.
gt_itab-no = '0002'.
gt_itab-name = 'Easy ABAP'.
GT_ITAB-PART = 'SAP TEAM'.
APPEND GT_ITAB.
LOOP AT GT_ITAB.
WRITE : GT_ITAB-NO,GT_ITAB-NAME,GT_ITAB-PART.
ENDLOOP.
구조체를 선언한 다음 구조체를 참고하여 인터널 테이블 선언 가능.
-> Global ABAP Dictionary Type 을 이용한 인터널 테이블 생성
방법 1.
data: gt_itab2 TYPE TABLE OF scarr.
data: gs_str LIKE LINE OF gt_itab2.
select * into TABLE gt_itab2
from scarr.
loop at gt_itab2 into gs_str.
WRITE :/ gs_str-CARRID,gs_str-carrname.
ENDLOOP.
방법 2.
data: gs_str1 TYPE scarr.
data: gt_itab3 LIKE TABLE OF gs_str1.
select * into TABLE gt_itab3
from scarr.
loop at gt_itab3 into gs_str1.
* WRITE :/ gs_str-CARRID,gs_str-carrname.
WRITE :/ gs_str1-CARRID,gs_str1-carrname.
ENDLOOP.
TYPES: BEGIN OF t_str1 ,
coll TYPE i ,
co12 TYPE i ,
END OF t_str1.
DATA gt_itab4 TYPE TABLE OF t_str1 WITH HEADER LINE.
DO 3 TIMES.
gt_itab4-coll = sy-index.
gt_itab4-co12 = sy-index ** 2.
APPEND gt_itab4.
ENDDO.
LOOP AT gt_itab4 .
WRITE: / gt_itab4-coll , gt_itab4-co12.
ENDLOOP.
만약 table으로 선언안하고 스트럭쳐로 할경우 headler line 참고
03 인터널 테이블 종류
1. Standard Table
순차적 Index를 가지는 테이블 Tree 구조를 이루고 있다.
Index를 이용하여 테이블 Entry를 찾을때 바람직한 테이블 구조 Read,Modify,Delete 구문 사용시 인텍스 사용
사용 시 Non-unique로 선언하여야 된다
2. Sorted Table
Standard Table과 Sorted Table은 lndex 테이블이다. key 값으로 정렬된 타입.
3. Hashed Table
// P237