알아보기 전
어떻게 하면 최대한 쉽게 이해하고 생각할 수 있는지 쓴 블로그이다.
자세한 내용은 넘어가고 최대한 쉽게 쓸려는 글입니다!
예제도 있으니 참고 바람.
Transparent Table vs Internal Table에 대해서
# Internal Table 정의 : 프로그램 내부에서 정의하는 Table이다,
즉 프로그램이 런타임동안에만 존재하는 Table이며 DB에 저장되어 있는 것이 아닌 메모리에 저장이 되어있는 Table이다.
여기서 말하는 DB에 저장되어있는 Table( SE11에서 확인 )은
Transparent Table이다.
반대로 위에서 말했듯이 프로그램 안에서 있는 Table은
Internal Table이다.
Internal Table은 무엇이다.라는 것까지 이해가 갔다고 생각하겠다.
그럼 이제 Internal Table을 사용하기 위한
1. WITH HEADER LINE
2. OCCURS 0
3. TABLES
에 대해서 알아보기 전에 Workarea부터 이해하고 넘어가자.
Workarea VS Structure에 대해서
# Workarea란? 말 그대로 작업공간이라고 생각하면 된다. 데이터를 저장할 수 있는 변수이다.
# Structure란? 말 그대로 구조체이라고 생각하면 된다. 데이터를 저장 할 수 없고 모든 데이터 유형의 필드로 구성된 데이터 객체이다.
# 크게 보자면
저장할 수 있느냐 없느냐의 차이점과 데이터 유형
다른 점 빼고는 Workarea와 Strcuture는 유사한 것이다.
그래서 엄연히 사용하는 건 다르지만
전체적으로 봤을 때는
Workarea = Structure이다.
예시를 들면
GS_SCARR은 Workarea면서도 Structure인 것이다.
그 이유는
GS_SCARR의 타입은 SCARR 타입의 Structure이며
GS_SCARR 변수는 Workarea인 것이다.
여기서 중점은 데이터를 저장할 수 있는 Workarea 인 것이다.
그럼.
# Workarea 사용한다는 것은
데이터를 저장할 수 있게 만드는 것이고
데이터를 저장 할 수 있다는 것은
데이터 타입들을 알고 있다는 것이다.
즉,
Workarea은 데이터 타입을 정해줘야 한다는 것이다.
Workarea을 만들기 위해서는
Structure or Tables or With header line or type 등등..
이 필요로 한다.
이제 그것에 대해서 알아가 보자.
WITH HEADER LINE이란?
프로그램을 개발하면서 " 헤더라인 있는 이터널테이블이다, 헤더라인 없는 이터널테이블이다."라는 말을 무조건 들어봤을 거라고 생각한다.
그것에 차이점은 Work area가 있냐 없냐 차이점이다.
다음과 같이 선언을 했다고 하면 이것 또한 Workarea 생성한 것이다.
디버깅을 통해서 확인해 보자.
GT_SCARR을 클릭해 보면 테이블처럼 생긴 아이콘과 모자 아이콘을 볼 수 있다.
여기서 말하는 HEADR LINE(헤더라인) = 모자아이콘은 Workarea이다.
GT_SCARR = Structure( Workarea )
GT_SCARR[ ] = Table
인 것이다.
한마디로
WITH HEADER LINE은 Table과 Structure( Workarea )을 한 번에 정의했다고 보면 되는 것이다.
이 말은 곧
다음과 같이 선언했다고 봐도 무방한 것이다.
( 이렇게 쓰면 물론 오류는 나지만)
그래서 WITH HEADER LINE일 때 뭐가 Workarea이고 뭐가 Table 구분하는 기준은 [ ]인 것이다.
위에서 설명했듯이
GT_SCARR의 변수는 Work area이고 GT_SCARR의 타입은 Structure
GT_SCARR[ ]은 Internal Table 인 것이다.
그래서 헤더라인이 있는 인터널 테이블이라고 말한다.
반대로 헤더라인 없는 인터널 테이블은 Work area가 없는 인터널 테이블인 것이다.
Occurs 0이란?
여기서는 Work area는 상관없다.
Occurs 0은 구식 방식이기 때문에 사용을 비추천 하지만 참고용으로 보면 될 것이다.
뒤에 붙는 숫자는 메모리를 늘려주거나 레코드를 늘려주는 용도
결론은 Internal Table을 만들어준다고 보면 된다.
확인을 해보자.
다음과 같이 Internal Table이 생성된 걸 볼 수 있다.
Tables이란
이것은 Internal Table이 아닌 SE11에서 정의한 Table(Transparent Table)만 정의할 수 있다.
또한 Table명을 변수로 설정하는 것이다.
예시를 보면 바로 이해한다.
TABLES SCARR는
SCARR라는 변수 Work area을 만들고
SCARR의 타입은 Structure을 만들어 준 것이다.
끝.
'.SAP > ..ABAP' 카테고리의 다른 글
SAP 기능이 제대로 동작을 안 할 때(WAIT문) (0) | 2023.04.19 |
---|---|
SAP E-Mail(메일) 발송 , 첨부파일( EXCEL, PDF ) (0) | 2023.04.14 |
SAP Domain Fixed Value(도메인 값) 가져오기 (0) | 2023.03.28 |
SAP BAPI란 (0) | 2023.03.03 |
SAP 동적 Domain Fixed Value(도메인 값) 가져오기 (0) | 2023.02.07 |