본문 바로가기

SAP ABAP/ABAP Dictionary

ABAP - Internal Table, Work Area

 

(1) WORK AREA

Work Area는 프로그램 내에서 만든 Structure를 의미한다.

Local type의 Structure를 Work Area라고 한다.

값은 변수처럼 하나씩 밖에 못 받는다.

 

Work Area는 Table에 하나 씩 값을 넣기 위해 만드는 작업자의 역할을 수행한다.

 

실습) Work Area 생성 

각 테이블에서 필요한 내역들을 참조해 Work Area를 생성할 수 있다.

위는 SCARR 테이블의 필드들이다.

DATA : BEGIN OF gs_scarr,
         carrid   TYPE s_carr_id,       "직접 참조"
         carrname TYPE scarr-carrname,  "간접 참조"
         currcode TYPE scarr-currcode,
       END OF gs_scarr.

ABAP Editor에서 이와 같이 선언하여 gs_scarr이라는 Work Area를 생성할 수 있다.

gs_scarr에는 현재 3개의 필드가 존재한다.

이 중 carrid는 ABAP Dictionary의 Data element를 참조하는 필드이며

carrname과 currcode는 사용하고자 하는 테이블 scarr의 필드 명을 참조하는 필드다.

 

 

그렇다면 어떻게 참조하는 것이 좋을까

 

무엇이 더 좋다고 할 수는 없지만

사용하고자 하는 Table의 필드명을 따라가는 것이 일반적이다.

왜냐하면 프로그램을 만들 때 특정 테이블의 필드와 동일한 타입으로 Work Area를 생성해 작업을 수행하는데

만약 ABAP Dictionary에 저장된 Data element를 참조하게 된다면

프로그램을 만들 때는 테이블에서 필드와 Data element를 확인하고 Work Area를 생성해 문제가 없을 수 있지만

이후 테이블 유지보수 과정 중 Data element를 수정하게 된다면

코딩된 내역과 다른 형태의 타입이 되기 때문에 문제가 발생할 가능성이 생긴다.

이러한 가능성을 배제하기 위해 Table의 필드명을 따라가는 것이 안정적이다.


(2) INTERNAL TABLE

Internal table은 프로그램 내에서 선언되어 사용할 수 있는, 즉 Local type인 Table이다.

그렇기 때문에 프로그램을 종료할 경우 사라진다.(휘발성)

Internal Table은 빈 박스일 뿐 작업자인 Work Area와 함께 다녀야 한다.

 

또한 PK의 개념이 존재하지 않기 때문에 중복된 값이 존재할 수 있음

 

실습) Internal Table 생성 

DATA : BEGIN OF gs_scarr,
         carrid   TYPE s_carr_id,       "직접 참조"
         carrname TYPE scarr-carrname,  "간접 참조"
         currcode TYPE scarr-currcode,
       END OF gs_scarr.

우리는 이미 위 실습에서 Work Area를 생성했다.

이제 gs_scarr를 사용해 Internal Table을 만들 것이다.

DATA : gt_scarr1 LIKE TABLE OF gs_scarr,
       gt_scarr2 TYPE TABLE OF scarr.

 

gt_scarr1은 우리가 이미 만든 gs_scarr를 사용해 만든 ITAB이다.

'TABLE OF'를 사용하면 뒤에 나오는 내역을 바탕으로 Internal Table을 만들 수 있다.

 

만약

DATA : gt_scarr1 LIKE gs_scarr.

로 선언한 경우 이름이 다른 Work Area 구조를 생성한 것이 된다.

그렇기 때문에 TABLE OF를 사용해줘야 한다.

 

 

LIKE와 TYPE의 차이

해당 프로그램에서 선언한 Object의 Type을 가져오기 위해서는 Like를 사용하고

ABAP Dictionary의 Object Type을 가져오기 위해서는 TYPE을 사용한다.

'SAP ABAP > ABAP Dictionary' 카테고리의 다른 글

ABAP - ITAB에서 레코드 삭제  (0) 2024.06.10
ABAP - Append & Collect  (2) 2024.06.10
ABAP - 데이터가 쌓이는 모습  (0) 2024.04.15
ABAP - 변수와 상수  (0) 2024.03.28
ABAP - Data  (1) 2024.03.26