TABLES: kna1, vbak.
DATA: gt_vbak LIKE vbak OCCURS 0 WITH HEADER LINE.
라고 코딩이 되어있는 프로그램을 보고 있습니다. 제가 잘 몰라서 그런데
두가지 방법의 차이가 있는건가요?
data 선언과 tables선언의 차이가 있다면 무엇인지 좀 알려주셔요~
댓글 6
-
는는이
2008.11.20 19:08
-
activeman
2008.11.20 20:21
두개다 별 차이는 없습니다.. 프로그램에서 데이터를 저장하는 용도로 사용이 됩니다.
다만 SAP에서 데이터를 불러 올때 (SQL의 SELECT문에서 ) TABLES로 테이블을 선언하지 않으면 에러 메시지가 나옵니다.
즉 테이블의 데이터를 SELECT 해서 ABAP내부적으로 자료를 저장하는 용도로 사용할 때 TABLES로 선언해 놓으셔야 합니다.
그리고 DATA로 선언하는 것은 프로그래머가 자료를 가공할때 사용하는 것이구요 그래서 HELP에 보시면 내부적으로 자료를
가공해서 사용할 경우는 DATA를 이용해서 테이블을 선언해서 사용하라는 메시지가 있습니다.(TABLES를 사용하지 않고--ECC6.0 HELP
에서는 어디에 있는지 확인이 안되네요..ㅋㅋ...시간나면 찾아서 알려 드릴께요)
즐밥하세요.
-
im 해성
2008.11.20 20:30
무슨차인가 하시면 어떻게 말씀드릴지 모르겠는데요...
tables: xxx. 하면 우리 sap dictionary에 있는 xxx라는 테이블 유형 구조를 한개 work area로 선언해주는거고요...
data: it_xxx like xxx occurs 0. 이렇게 선언해주면 인터널 테이블 형식으로 생성됩니다.
여기서 it_xxx는 속성이 xxx와 같고 memory 에 디폴트로 0라인 가지 이터널 테이블 생성하겠다는 뜻입니다.
구지 뒤에 with header line 쓰지 않아도 header line 있는걸로 생성됩니다. 왜서인지 저도 잘 모르고...
도움이 되셨으면 합니다.
-
아밥퍼
2008.11.20 21:49
TABLES: KNA1, VBAK.
==> 이것을 다르게 표현해 본다면 아래와 같습니다.
DATA : IT_KNA1 LIKE KNA1,
IT_VBAK LIKE VBAK.
WORK AREA, STRUCTURE, 헤더라인을 가지는 인터널 테이블에서 헤더라인과
같다고 이해하시면 될 것 같습니다.
또 위의 의미와는 다르게 프로그램 내에서 사용하고 있는 테이블이 이런게 있다고
사용하는 경우도 있습니다.
***
DATA: GT_VBAK LIKE VBAK OCCURS 0 WITH HEADER LINE.
: VBAK 테이블의 구조를 가지는 헤더라인이 있는
테이블 형태로 선언한 것입니다. -
는는이
2008.11.21 02:26
역시 초보와 고수님들의 차이는 급이 다른것 ㅠ_ㅠ
-
해물파전
2008.11.21 19:26
감사합니다~~!!
TABLES는 KNA1 이랑 VBAK 이란 테이블을 프로그램 내에서 사용하겠다고 선언한거고
DATA 는 gt_vbak 이라는 인터널 테이블을 사용하겠다고 선언한거죠..
gt_vbak 의 인터널 테이블 타입이 vbak 의 테이블 구조와 똑같다는 거구요.