DATA : ws_data1 TYPE i.
ws_data1 = 24.
WRITE: / ws_data1.
DATA : ws_data2 TYPE n LENGTH 4.
ws_data2 = 24.
WRITE: / ws_data2.
DATA : ws_data3 TYPE n LENGTH 6.
ws_data3 = 24 / 5.
ws_data4 = 123456.
WRITE: / ws_data3.
책 102쪽 예제입니다.
여기서 103쪽 출력값은
24
0024
000003
으로 돼 있는데, 실제 프로그램을 실행시켜보니
24
0024
000005
로 나옵니다. 000003 -> 000005 이건 오타라고 해도
24출력이 이렇게 나오는 이유와 고치는 방법을 알고 싶습니다.
type i 로 123456을 하나 더 만들어 출력하면
24
123,456
0024
000005
이렇게 나옵니다. 옆에서 듣기로는 write시 임의로 판단해서 오른쪽 정렬을 해서 출력했다고 하는데,
정확한 이유를 알고싶습니다. 완전 초보 질문 같긴 하지만 여기저기 찾아보고 물어봐도 다들 잘 모르는 것 같아서 글 올립니다.ㅜㅜ
댓글 6
-
클라우드
2008.10.14 23:28
-
SAP폐인
2008.10.14 23:43
N 타입은 숫자타입이 아니라 숫자가 포함이 될 수 있는 텍스트 타입입니다. N타입의 숫자는 단지 숫자로 표시된 문자일 뿐입니다.
--> 이렇게 help.sap.com 에 나오더군요. 참고하세욥.
원문)
ABAP supports three numeric data types - I, P and F. Type N is a text type, not a numeric data type (although its values are strings of digits), because the strings are not used for calculation purposes. Typical examples of type N fields are account and article numbers (provided they contain only digits), as well as the sub-fields of date and time fields
-
클라우드
2008.10.14 23:46
저도 정확히 배우고 가네요 ^^ -
sincere
2008.10.14 23:56
여기저기 물어보고 검색하다가... write 에서 f1 눌러나오는 도움말에서 찾았습니다. type i 형은 출력길이 11을 가지고 기본이 오른쪽 정렬이라고 합니다.(i, f, p 다 오른쪽 정렬)
책에 나온 출력결과는 어떻게 왼쪽정렬로 나왔는지 모르겠습니다. 버전이 틀리거나 그런걸까요??
-
보나
2008.10.15 00:11
type i 의 경우 출력자리수 11자리
그중 10 자리는 숫자값
마지막 1자리는 부호값을 가집니다.
그 이상의 자리수를 가지게 되면 dump 뜨게 됩니다.
SAP 폐인님 말씀처럼 N 타입의 경우 숫자가 포함될 수 있는 텍스트 타입입니다.
숫자의 경우 SAP 에서는 자동으로 오른쪽정렬을 하게되고,
텍스트의 경우에는 왼쪽정렬로 나옵니다.
버젼이 틀려서는 아니고 책의 오타? 정도로 봐야할 것 같습니다.
-
보나
2008.10.15 00:13
data : a type i.
a = 123456789 (O)
a = -1234567890 (O)
a = 12345678901 (X)
입니다.
같은 초보로서 대답드리기가 좀 어색하지만 ^^
말씀드리자면. type이 I 인경우는 말 그대로 숫자입니다.
즉 자동으로 우측정렬이 기본이 되는 타입이지요.
반대로 N 타입은 특이한 건데
숫자와 문자의 성격을 모두 가지고 있다고 보시면 됩니다.
더구나 선언에서 지정한 자리수를 모두 채워주는 기능도 있죠
그래서 0024 ( <- 요건 4자리로 선언된거라 그런거죠 ) 라는 식의 표현이 되며
문자 특성을 가지기에 좌측 정렬이 된겁니다.
더 정확한 설명은 여기의 더 고수분들이 해주실거 같네요 ^^