REPORT z002.
TYPES : BEGIN OF line,
col1(10) TYPE c,
col2(10) TYPE c,
END OF line.
체크1 ==> DATA itab TYPE TABLE OF line WITH HEADER LINE.
체크2 ==> DATA itab LIKE TABLE OF line WITH HEADER LINE.
itab-col1 = 'kim'. itab-col2 = 'eunjeong'.
INSERT table itab.
itab-col1 = 'park'. itab-col2 = 'youngha'.
INSERT table itab.
LOOP AT itab.
WRITE :/ itab-col1, itab-col2.
ENDLOOP.
위소스에서 체크1은 오류가 나지 않구요, 체크2는 오류가 나는데 왜그런지 알수가 없네요..
type과 like의 차이를 잘 모르겠어요..
고수님들 도와주세요.. ㅠㅜ
댓글 9
-
gogo!
2008.08.13 03:03
-
어린칼
2008.08.13 05:37
이 소스는 하나만 고치면 됩니다. 두번째줄에 있는걸 Types---->data:로 고치시면 작동됩니다.
초보가 내공이 많이 쌓인 분께 ㅋㅋㅋ 아니할말을 했습니다.
-
어린칼
2008.08.13 06:39
소스 수정했습니다. 박영하 원장님이 두번 나오셔서 ㅋㅋㅋ 첫번째 방법입니다.
*&---------------------------------------------------------------------*
*& Report Z002
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z002.
data : BEGIN OF line,
col1(10) TYPE c,
col2(10) TYPE c,
END OF line.
*DATA: itab LIKE table of line WITH HEADER LINE.
DATA itab type TABLE OF line WITH HEADER LINE.
*itab-col1 = 'a'.
line-col1 = 'kim'. line-col2 = 'eunjeong'.
append line to itab.
*INSERT table itab.
line-col1 = 'park'. line-col2 = 'youngha'.
append line to itab.
*INSERT table itab.
LOOP AT itab into line.
WRITE :/ line-col1, line-col2.
ENDLOOP.
두번째 방법입니다.
*&---------------------------------------------------------------------*
*& Report Z002
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z002.
types : BEGIN OF str,
col1(10) TYPE c,
col2(10) TYPE c,
END OF str.
data: line type str.
*DATA: itab LIKE table of line WITH HEADER LINE.
DATA: itab type TABLE OF line WITH HEADER LINE.
*itab-col1 = 'a'.
line-col1 = 'kim'. line-col2 = 'eunjeong'.
append line to itab.
*INSERT table itab.
line-col1 = 'park'. line-col2 = 'youngha'.
append line to itab.
*INSERT table itab.
LOOP AT itab into line.
WRITE :/ line-col1, line-col2.
ENDLOOP. -
Pada
2008.08.13 13:03
감사합니다 -
Hoony
2008.08.13 18:11
그렇군요..
-
MadMax
2008.08.13 18:40
질문자의 source 에서 line 의 설정은 type(형태)으로 지정되어 있어 그 source 내에서 line 을 이용한 data 선언은 type line 또는 type table of line 등과 같이
사용을 해야 합니다.(like 사용은 안됩니다)
like 의 사용은 data(개체)로 선언되어 진것에 한합니다.
즉
types: begin of line, 이렇게 선언한 이후 사용은 data itab type table of line with header line
data: begin og line, 이렇게 선언한 이후 사용은 data itab like table of line with header line
이렇게 쓰면 됩니다.
참고로 types: begin of line, 이라고 선언한후 line 에 값 저장은 되지 않습니다.
즉 move 'AA' to line. 하면 에러가 발생이 됩니다.
물론 data: begin of line, 이라고 선언한 후에는 line 에 값 저장이 됩니다.
..
-
cheritis
2008.08.13 20:08
MadMax님 감사합니다. 이글을 읽어보기전에 책으로 대충 감을 잡았었는데 님의 글을 읽으니 확실하게 정리가 됩니다.
감사합니다.
-
쪼꼬팜
2008.08.13 21:11
질문자는 어린칼님의 해결방안인 스트럿쳐로 만들어서 해결하는 방법이 아니라 도메인으로 셋팅된 타입을 이용할때 왜 like가 사용되지 않느냐? 라는 뜻이었던거 같은데 MadMax님이 깔끔하게 설명하셔서 부연설명이 필요없네요.
-
어린칼
2008.08.13 21:16
ㅋㅋㅋ 쪼꼬팜님 같이 공부하시는 분인데욥 ㅋㅋㅋ 지적받았습니당 ㅎㅎ
like line이라고 쓰면 오류 안날꺼예요.
제가 이해하는 걸로는...
like는 스트럭쳐나 이미 정의된 것들을 참조할때 쓰거든요.
type은 주어진 형식 그니까, C, I, P같은걸 지정할때 쓰는거고요.