안녕하세요.
type 과 like 의 차이 점이 궁금해서 글 올려 봅니다.
data : amt like tab-f1.
위와 같이 tab-f1 을 참고(?) 하는 data amt 를 선언 하였는데,
tab-f1의 data 는 decimal 15, decimal places 6 으로 되어 있습니다.
그런데, amt 에서 collect 를 하면서 overflow 가 발생하더군요.
주위 분에게 여쭤 보니, like 를 써서 overflow 가 나면 type 으로 바꿔 주면 된다고 해서 아래와 같이 일단은 고쳐 놓았습니다.
data: amt(15) type p decimals 6.
type 과 like 에 어떤 차이가 있어서 이렇게 되는지 알고 싶습니다.
댓글 12
-
지의
2009.10.06 08:48
-
지의
2009.10.06 08:50
하나 더.. like 와 type 에는 프로그램을 돌리는 퍼포먼스에 약간의 차이가 있습니다.
거의 미미한 차이라 ㅋㅋ
-
요요
2009.10.06 17:30
위 선언의 차이는 tab-f1 은 특정테이블에 선언된 필드의 속성을 따라가게 되어 collect 시
제한된 크기를 넘어서기 때문에 오류가 발생되는 것이고 p decimals 6 라고 선언을 하게 되면
p type의 최대크기를 활용하기 때문에 collect 시 오류가 발생하시 않는 것입니다.
아마도 그 최대크기도 벗어날 만큼의 collect 가 된다면 동일한 overflow 오류가 발생할 거예요.
type과 like 의 차이는 SAP에서는 똑같다고 얘기합니다. 단, 차이라고 한다면 참조하는 대상에
차이가 있을텐데요. type 는 elementary data type(i, p, c, t, d, etc...), DDic(Data dictionary),
program 내의 types 로 선언된 data object 등이고 like 는 프로그램 내부에서 선언된 data object 나
structure, table 등의 필드 정도 되겠는데요 아마도 memory area 가 있는 data object 냐 아니냐에
따라서 선언이 type 이냐 like 냐 정도로 된다고 생각하시면 될 것 같습니다.
-
Risky
2009.10.06 19:25
What is the difference between Type and Like?
Answer1:
TYPE, you assign datatype directly to the data object while declaring.
LIKE,you assign the datatype of another object to the declaring data object. The datatype is referenced indirectly.
Answer2:
Type is a keyword used to refer to a data type whereas Like is a keyword used to copy the existing properties of already existing data object.
Answer3:
type refers the existing data type
like refers the existing data object
-
마이크타이슨
2009.10.06 19:41
performance 차이가 있다면 TYPE 쪽이 더 유리하다는 말씀이신가요?
-
요요
2009.10.06 20:28
그렇다고 할 수 있습니다만 거의 차이가 없다고 보여지네요 ^^
-
dbnoid
2009.10.08 00:31
한가지더 Type으로 써서 처리하면 ALV로 보여질때 텍스트헤더가 비어보이는 경우가 있어 적어봅니다..^^ 즐밥하세요
-
노아
2009.10.08 00:46
그렇군요.^^ 감사합니다. 저도 궁금했는데.. 그게 그거인것 같아서..ㄷㄷ
Type은 직접 도메인을 참조하고, Like는 연결된 필드의 도메인을 참조한다는의미군요..^^ㅎ
다시한번 좋은 정보 감사 합니다.
-
부산갈매기
2009.10.08 18:45
네. 일반적으로 어떤 테이블의 필드를 참조하는 필드를 Display 하거나, 해당 테이블에 데이타를 modify 할 경우,
like 선언하면 그 해당 테이블의 필드와 같은 속성을 가지는 변수를 선언할 수 있어 편하기도 하고, 또한 오류도 없겠죠.
type은 주로 어떤 테이블의 필드를 참조하지 않는 변수의 경우 사용한답니다.
-
Q&A
2009.10.13 19:15
감사합니다. 잘알고가네요.
-
whatup
2010.01.26 01:20
정확히 알지 모르던 내용 이였는데 찾다가 좋은 정보 알고 가네요 ^^
감사합니다
-
이누야사
2010.01.31 19:03
무턱대고 사요만 했었는데..이런 미묘한 차이가 있었군요... 좋은 정보 감사합니다.
numeric 으로 했으면 덤프는 안났을거구요
decimal 은 되도록 사용하지 않는게 좋습니다.
type 과 like 의 차이는 type 은 domain 을 직접 reference 한다는 의미가 있고
like 는 어느 테이블의 어느 필드에 있는 domain 을 reference 한다는 의미가 있습니다.
즉 위에서 decimal 필드를 사용하지 않고 curreny 나 quantity 필드 또는 numeric 을 사용했다면
덤프가 발생하지 않았겠죠.
type 을 사용해서 하는 것이 아니라
pack 타입으로 선언해서 된겁니다.
pack 과 decimal 은 다른 겁니다.
수고하세요.