ATA: date TYPE d,
number TYPE p DECIMALS 2,
count TYPE i,
str(20) type c.
str = 'TYPE 테스트'.
PERFORM typetest USING date str number count.
FORM typetest USING now
txt TYPE c
value(num) TYPE p
int TYPE i.
DATA: t(2) TYPE c.
DESCRIBE FIELD now TYPE t.
WRITE: / 'NOW 변수 타입 : ', t.
write : / txt.
* DESCRIBE FIELD txt LENGTH t IN CHARACTER MODE.
WRITE: / 'TXT 변수 타입 : ', t.
DESCRIBE FIELD num DECIMALS t.
WRITE: / 'NUM 변수의 소수자리 : ', t.
DESCRIBE FIELD int TYPE t.
WRITE: / 'INT 변수의 타입 : ', t.
ENDFORM.
위에 내용처럼 하게 되면 데이타 출력화면에서는 그림처럼 나오는게 아니라
txt 변수 타입 : 20이라는 결과가 나와야 합니다.
그러기 위해서는 제가 주석 처리한부분이 있어야 하는데요.
제가 지금해보는 시스템에서는 in이라는 구문이 먹히질 않아서 그 전에도 in이라는 구문이 들어간건 다 주석처리를 하고
볼수밖에 없었는데요.
저 구문을 다르게 표현할수있는 방법이 없을까 해서 질문좀 올렸습니다~ 답변을 달아주시면 감사합니다~
댓글 9
-
정군
2009.04.01 20:46
-
보나
2009.04.01 21:05
Unicode 문제일듯 하네요.
DESCRIBE FIELD txt OUTPUT-LENGTH t.
혹은
DESCRIBE FIELD txt LENGTH t.
로 바꿔보세요.
-
쭈니
2009.04.01 21:07
제가 지금 사용하고 있는 버젼은 4.6b입니다.
-
쭈니
2009.04.01 21:15
보나님 감사합니다~ IN이라는 구문이 몇버전부터 안되는건가보네요???
지금 보나님이 말씀 해주신대로 OUTPUT-LENGTH라는 구문을 사용했더니 신텍스 에러도 없이 잘 넘어갔습니다.
IN이라는 구문을 대신에 필요하다면 어느 곳이든 IN대신에 저걸 사용해도 괜찮을꺼 같네요.
그럼 질문을 하나만 더 드려도 될런지 모르겠지만, 지금 DESCRIBE구문에서 사용한것이 주석을 처리하면 D라는 값이 나오던데요.
저 txt라는 값이 char모드인데 그걸 숫자로 변환해주는것이 맞는건지요??
-
보나
2009.04.01 21:19
DESCRIBE FIELD 에서 F1 눌러보시면 현재 Version 에 맞는 Syntax 가 뜨겠지요.
(지금까지 답변에서도 항상 말씀드렸지만) F1 한 번 눌러보시면 syntax 에러나 구현에 대한 지식습득은
쉽게 하실 수 있으실 것이고,
F1 에서 나오는 예제의 값을 직접 조금씩 변경해보시면 원하시는 답을 얻으실 수 있을 것 같네요.
질문전 F1 확인을 다시 한 번 부탁드리겠습니다.
ECC 5.0, unicode system (현재 플젝나와있는사이트) 에서의 DESCRIBE FIELD 에 대한 F1 은 아래와 같습니다.
* 아래의 F1 내역은 Unicode 적용된 ECC5.0 버젼이므로 쭈니님의 시스템과 다릅니다. *
시스템 차이에 대한 부분은 빨강색으로 처리했습니다
Addition 2
... LENGTH ilen IN { BYTE | CHARACTER } MODE
Effect
The length directly used by the data object dobj in the memory is determined in bytes or characters depending on the addition MODE and is assigned to the data object ilen. The data type i is expected for ilen.
You must specify the addition MODE in Unicode programs. The variant with the addition IN BYTE MODE determines the length of the data object dobj in bytes. The variant with the addition IN CHARACTER MODE determines the length of the data object dobj in characters. When using IN CHARACTER MODE, the data type of dobj must be flat and character-type. You can only specify IN BYTE MODE for deep data types and in this case, the length of the reference (8 bytes) is determined.
In non-Unicode programs and in releases prior to 6.10, LENGTH can be used without the addition MODE. In this case, the addition IN BYTE MODE is used implicitly
Note
For data objects with a fixed length, the length is determined that is specified during the creation of the data object. To determine the the used length of character-type data objects without counting the trailing spaces, you can use the built-in function strlen.
Example
Calculation of bytes required for the display of one character. The result is greater than 1 in multi-byte systems. .
DATA: text(1) TYPE c,
blen TYPE i,
clen TYPE i,
bytes TYPE i.
DESCRIBE FIELD text: LENGTH blen IN BYTE MODE,
LENGTH clen IN CHARACTER MODE.
bytes = blen / clen.
-
쭈니
2009.04.01 21:23
친절한 답변 감사합니다~ 저는 f1눌렀을때 화면이 왜 다른건지는 모르겠지만, 그전에 교육을 받을적에도 f1은 보나님이 올려주신것처럼 볼수있었는데, 너무너무 감사합니다~ -
보나
2009.04.01 21:30
시스템 버젼이 다르니 당연히 F1 내역이 다르겠지요.
(Unicode 및 Non-unicode 혹은 System Version 별로의 차이가 발생합니다. 특히 Unicode 와 관련되서는 자료실 검색 등을 통해
많은 정보를 얻으실 수 있습니다.)
( 검색어: unicode )
참고 : http://e-abap.servebbs.net/zb/bbs/zboard.php?id=abappds&no=2016
F1 누르시면 쭈니님 시스템에 맞는 도움말이 보여질테니,
Syntax 에러 및 사용법에 대해서는 F1 도움말을 '꼭' 한번 확인해주세요.
(영어라 힘드실지는 몰라도 예제 등이 많이 포함되어 있으며, 앞으로 계~~속 눌러보셔야 할 F1 이기에 친숙해지셔야 합니다)
-
쭈니
2009.04.01 21:38
네 감사합니다~~ 지금 익숙해지기 위해서 보면서 연습해보는중입니다~
익숙하지 않아서 잘못된건가 하는 생각해서 안보게 되었던 부분인데. 보나님 말씀에 다시 보게 되네요.
익숙해지도록 많이 봐야겠습니다~
답변 다시 한번 감사드립니다~
-
abap고수되기!
2009.09.15 04:09
좋은 정보 잘 보고 갑니다~
쓰시는 버전을 올려주시는게 답에 도움이 될 듯 합니다.