DATA를 선언할때 쓰는 LIKE와
Select-Options 의 FOR는 같은 개념인걸로 아는데
왜 Tables 선언시에 FOR뒤의 타입으로 선언되는 Table만 선언하면 되나요??
단순히 범위값이라서라기엔 먼가 있을거 같아서요~
아시는분 답변좀요~
댓글 6
-
맨날초보
2010.12.03 18:19
for는 range 개념을 갖는거에요. (from ~ to~) Like를 쓰면 그 필드 타입을 갖다 쓰겠다만 되는거지...어디부터 어디까지 쓰겠다로 할 수 없잖아요. -
언제나1등
2010.12.03 19:02
답변감사합니다.
범위값때문에 테이블을 선언해서 쓴다는 말씀이네요.
그렇지만 for가 범위개념이지만 for 나 Like 둘다 필드의 타입을 갖다 쓰는건 마찬가지 아닌가요??
DB내의 테이블 타입을 똑같이 갖다쓰는데 왜 For만 테이블을 선언할까요??
-
테라스
2010.12.03 19:34
like 로도 테이블을 선언 할 수 있습니다.
data: aa like table of lvc_s_fcat.
data: bb like lvc_s_fcat occurs 0.
위의 두 문장을 확인해보시면 테이블 형태로 데이터가 선언되는걸 확인할 수 있습니다.
-
언제나1등
2010.12.03 22:15
아 질문이 잘못 된건지..ㅎㅎ
제말은 프로그램 선언할때 Tables: 테이블1 , 테이블2. 이렇게 선언되는데
여기서 선언하는 테이블1,2는 왜 Select-Options의 for 뒤의 테이블만을 선언하는지 궁금합니다.
Like 뒤의 테이블은 선언안해줘도 문제없었습니다.
-
맑은하늘
2010.12.03 23:55
선언시 like 와 type 의 차이를 이해하시면 될텐데요.
대체로 like 같은 경우는 프로그램내에서 선언되어 실행시 메모리(data object의 instance)가 잡히는 (기본값 포함)
변수들이 될 거구요. type 은 선언은 되어있지만 실제 메모리 영역이 없는 변수들로 참조가 될 거예요.
쉽게 말하면 type 은 templates 참조이라고 보시면 되고 like 는 instance 참조라고 보시면 됩니다.
예를 들면 types ty_var type c. data gv_var type c. 라고 선언이 되어 있다면
ty_var 은 data gv_char type ty_var. 로 참조가 될 것이고 gv_var 은 data gv_char like gv_var.로 참조가
될 거예요. select-options 의 for 도 like 와 같이 생각하시면 되구요.
tables는 ddic에 있는 구조나 테이블과 같은 구조의 내부변수로 선언된다고 보시면 되기때문에
like 와 같이 생각하셔도 됩니다.
쉽게 말하자면 tables, data 로 선언된 변수는 like 로 참조하고
ddic나 types 로 선언된 변수는 type으로 참조하신다고 보시면 될거예요.
전부는 아니지만 대략 이해하시기 편하라고 간단하게 말씀드렸습니다.
(data types과 data objects 에 대하여 찾아보시면 이해하시기 편하실 거예요)
select-option 에서 for 이하로 참조되는 예를 들어보면
tables kna1.
select-options so_kunnr for kna1-kunnr.
또는
data gs_kna1 type kna1.
select-options so_kunnr for gs_kna1-kunnr.
로 사용하실 수 있겠죠... 도움이 되셨길 바랍니다.
-
나의투쟁
2010.12.04 00:43
SELECT-OPTION 에 대한 헬프를 보니까 설명이 되어 있군요
핵심내용은 존재하는 data object (주로 dictionary) 를 참조하여 미리 선언된 변수만이
FOR 다음으로 선언이 가능하다네요
즉, 프로그램에서 미리 선언한 변수만 for 다음에.. 온다고 생각하시면 어떨지? ㅎ
LIKE 다음은 FOR 다음에 올 수 있는 것과 dictionary 겠군요
아.. 또 하나 TABLES 하고 다음에 쓰는것은 테이블 선언이 아니고
Work Area 라는 변수에요
TABLES : T001W .
DATA : GS_T001W LIKE T001W .
위에 선언된 두개는 변수 이름만 달랐지 같은 속성을 가진 변수(Work Area) 입니다
질문을 보고 당황했습니다
오랜동안 궁금해 하지도 않았을 정도로 당연한 걸로만 생각했었거든요
신선하고 새로운 호기심에 F1을 눌러보고 한 수 배워가네요
아래 select-option 으로 선언을 몇가지 테스트 해봤는데 참조하세요
TABLES : T001W .
SELECT-OPTIONS : S_WERKS1 FOR T001W-WERKS .
DATA : GS_T001W_01 TYPE T001W .
SELECT-OPTIONS : S_WERKS2 FOR GS_T001W_01-WERKS .
DATA : GS_T001W_02 LIKE T001W .
SELECT-OPTIONS : S_WERKS3 FOR GS_T001W_02-WERKS .
DATA : GS_T001W_03 LIKE GS_T001W_02 .
SELECT-OPTIONS : S_WERKS4 FOR GS_T001W_03-WERKS .
DATA : G_WERKS1 TYPE WERKS_D .
SELECT-OPTIONS : S_WERKS5 FOR G_WERKS1 .
DATA : G_WERKS2 LIKE T001W-WERKS .
SELECT-OPTIONS : S_WERKS6 FOR G_WERKS2 .
DATA : G_WERKS3(4) .
SELECT-OPTIONS : S_WERKS7 FOR G_WERKS3 .