여러분 안녕하세요,
오늘은 Internal Table(인터널테이블) HEADER LINE에 대해서 알아보도록 하겠습니다.
HEADER LINE
구조체(wa)와 인터널테이블(itab)이 하나로 된 것이라 생각하면 됩니다.
즉, 헤더라인으로 인터널테이블을 선언할 시 자동으로 구조체(wa) 도 생성된다는 것이죠.
예전 문법(?)이라 말하는게 맞지는 않지만 현재는 구조체와 인터널테이블을 다르게 구별하여
사용하는 것을 ABAP에서도 지향한다고 합니다
따라서 -> GS_LIST (구조체) GT_LIST(인터널테이블) 식으로 선언하는 게 맞겠네요 ^^
하지만 프로그램을 개발하다 보면 예전 문법으로(?) 헤더라인으로 개발된 경우도 많아서
해당 개념을 짚고 넘어갈 필요성이 있답니다. ( 프로그램 수정시 일관성을 지켜준다는 마인드이기에 헤더라인으로 개발했다면 저 또한 써준답니다 ^^* )
ABAP도 문법이 발전하면서 범용적인 데이터 타입 변수를 지원하고 있는데요 아직까진 Ranges 변수로 선언하거나 selection-option for 형태와 같이 자주 쓰는 문법에서도 헤더라인이 생기니
꼭 알아야겠죠?
헤더라인 생성 CASE
1. Internal Table(인터널테이블)구성 시 OCCURS 0 또는 WITH HEADER LINE
2. Selection-Screen 에서 selection-option 으로 받을 시
3. Ranges 레인지변수 생성 시
1. 인터널테이블 OCCURS 0 또는 WITH HEADER LINE
CASE1. OCCURS 0
GT_LIST OCCURS 0 인터널테이블을 헤더라인 생성
CASE2. DATA: GT_LIST TYPE TABLE OF SFLIGHT WITH HEADER LINE.
GT_LIST 테이블에 WITH HEADER LINE 선언 시 헤더라인 생성
GT_LIST를 헤더라인이 있는 형식으로 했을 경우 구조체와 인터널테이블 [] 생성된 것을 알 수 있습니다.
그렇다면, 어떻게 구별하여 ABAP에서 인식을 할까요? 상황에 맞춰서 써주면 됩니다.
EX)
MODIFY
MODIFY SFLIGHT FROM GT_LIST (구조체를 뜻함)
MODIFY SFLIGHT FROM TABLE GT_LIST (인터널테이블을 뜻함)
즉, GT_LIST를 어떻게 바라볼 것인지 구별하는 문법을 '정확히' 써줘야 한다는 것입니다.
또 다른 예를 하나 보시죠
MOVE-CORRESPONDING
DATA: GT_LIST2 TYPE TABLE OF SFLIGHT ( 헤더라인 없는 인터널테이블 )
MOVE-CORRESPONDING GT_LIST TO GT_LIST2.
( move-coressponding 문법의 경우 같은 필드의 속성이 있을 경우 인터널테이블에 담긴 데이터를
다른 인터널테이블에 넘기는 문법이다 따라서 헤더라인이 있는 GT_LIST의 경우 [] (인터널테이블표시) BODY
부분을 써줘야 한다 )
올바른 예)
MOVE-CORRESPONDING GT_LIST[] TO GT_LIST2[].
2. Selection-Screen 에서 selection-option 으로 받을 시
3. Ranges 레인지변수 생성 시
헤더라인 구조체와 인터널테이블 두 가지의 속성을 갖춘 변수를 가지는 HEADER LINE에 대해 알아보았습니다.
감사합니다.
끝.
'SAP > ABAP' 카테고리의 다른 글
SAP Variant 변형 (2) | 2021.04.06 |
---|---|
SAP ABAP PARAMETER , SELECT-OPTION , SELECTION-SCREEN (0) | 2021.04.04 |
SAP ABAP 연산자 (0) | 2021.03.30 |
SAP ABAP AT EXIT-COMMAND과 OK_CODE 방식의 차이점 (0) | 2021.03.30 |
SAP ABAP TYPE-1(실행가능프로그램)과 모듈 풀 차이점 (1) | 2021.03.29 |
댓글