저는 배우기 시작한 곳이 이곳이라선지 모르지만, 용어에대한 통일과 정확한 의미에 대해 깊은 의미를 둡니다. 최근 몇몇 글을 읽다가, 스스로 의문이 들기도 하고, 토의를 통해서 바르게 이해하는게 좋다 싶어서 좀 찾아봤습니다.
[전제]
1. SAP BASIS가 620이라서 조금 다른 내용이 있을지도 모르겠습니다.
2. 잘못된 내용은 지적해 주시면 고치겠습니다. 이 글이 스스로의 공부에 대한 목적이 더 크기 때문입니다.
C나 java를 공부하시고 넘어오신 분들이 internal table에 대해서 structure라는 말을 쓰시는 듯 합니다. 몇 분 계시더군요. 제가 알고 있는 용어와 달라서 의문스러웠습니다. 우선 제가 아는 개념을 정리해 볼까요.
ABAP에서는 data type과 data object가 있습니다.
전자는 흔히 우리가 types라고 선언한는 것이고 후자는 data로 선언하는 것입니다. 여기에 관한 조금 더 깊은 내용은 공부를 더 하고 문법과 함께 정리해 올려보겠습니다.
여하튼, 데이터를 선언할 때는 결국 다시 세가지로 나뉩니다.
1. simple type (or feild definition)
2. structured type (or structured data object)
3. internal table type (or just internal table)
위의 정의만 보더라도, internal table의 body는(header가 아닌것) structure가 아니라 internal table인 것입니다. 흔히 이야기하는 work area는 structured data object라고 볼 수 있을 듯 합니다.
이에 따라서, internal table은 두 종류로 분류할 수 있을 듯 합니다. 다른 분류도 있겠습니다만...
- internal table with header line
- internal table without header line
입니다. (complex냐 simple냐는 이야긴 제외하겠습니다.)
전자가 우리가 흔히 사용하는
data: begin of itab occurs 0,
...
end of itab.
에 의해서 정의되는 것이지요. header line이란게 다른 언어에는 없는 독특한 개념으로 알고 있습니다. 이런 ABAP의 특성이 java를 기반으로 했다고는 하지만, web 환경의 주류를 이루게 되는 object로 넘어가면서 다 사라집니다. 따라서 ABAP OOP와 이를 기반으로 움직이는 BSP, NetWeaver에서는 역시 header line을 가지는 internal table이 사용 불가합니다. 따라서 불편하지만 꼭 work area를 달고 다녀야 하지요. 여튼.. 뭐 그렇다는 이야깁니다.(사실은 꼼수로 headerline 을 가지는 듯 하게 할 수도 있는 것과 관련된 sdn blog의 post도 있습니다.)
아침에 급작스레 쓰려니 중언부언 이상해 졌습니다만, 요점은
internal table의 body는 structure가 아니다
입니다.
따라서, header line이 없는 internal table이라고 이야기 하는게 맞다(라기 보단 맞을 것 같다 ^^;)
입니다.
즐거운 하루 되시고, 틀린점이나 보충할 점은 올려주시면 고맙겠습니다.