안녕하세요~ 제가 type을 공부하면서 왜 이렇게 되는건지 몰라서 질문을 좀 드립니다.
결과 화면도 같이 올리겠지만, 책에서는 그림처럼 나오는것이 아니라
숫자 100~~
숫자 1.33~~
숫자 1.333~~
숫자 1~~
숫자 1.33333~~~
이렇게 나오는데요.
책에서 보는것처럼 나오게 하려면 뭐 들여쓰기라던지 그런게 있는건가요??
지금 로직으로는 안되는건가요??
DATA : TEXT1(20) TYPE C,
TEXT2 TYPE STRING,
L_NUM1 TYPE I,
L_NUM2 TYPE P DECIMALS 2,
L_NUM3 TYPE P DECIMALS 3,
L_NUM4 TYPE P,
L_NUM5 TYPE F.
TEXT1 = '숫자'.
L_NUM1 = 100.
TEXT2 = ' 은 INTEGER타입 입니다.'.
WRITE : TEXT1, L_NUM1, TEXT2.
TEXT1 = '숫자'.
L_NUM2 = 4 / 3.
TEXT2 = ' 은 PACKED NUMBER타입 입니다.'.
WRITE : / TEXT1, L_NUM2, TEXT2.
TEXT1 = '숫자'.
L_NUM3 = 4 / 3.
TEXT2 = ' 은 PACKED NUMBER타입 입니다.'.
WRITE : / TEXT1, L_NUM3, TEXT2.
TEXT1 = '숫자'.
L_NUM4 = 4 / 3.
TEXT2 = ' 은 PACKED NUMBER타입 입니다.'.
WRITE : / TEXT1, L_NUM4, TEXT2.
TEXT1 = '숫자'.
L_NUM5 = 4 / 3.
TEXT2 = ' 은 FLOAT타입 입니다.'.
WRITE : / TEXT1, L_NUM5, TEXT2.
댓글 8
-
민버미꺼!
2009.03.31 00:51
-
보나
2009.03.31 01:22
char 는 왼쪽정렬,
numc 은 오른쪽정렬,
p,i,f 기본자리수
떄문이지요.
서적이나 F1 등을 통해 data type 에 대해 살펴보세요.
부호에 대한 차이도 있으니, 아래 로직을 참고하세요.
( * -1 부분을 삭제 하신것과 붙인것과 위치 차이를 아실 수 있을듯 합니다.)
DATA : TEXT1(20) TYPE C,
TEXT2 TYPE STRING,
L_NUM1 TYPE I,
L_NUM2 TYPE P DECIMALS 2,
L_NUM3 TYPE P DECIMALS 3,
L_NUM4 TYPE P,
L_NUM5 TYPE F.
TEXT1 = '숫자'.
L_NUM1 = 100 * -1.
TEXT2 = ' 은 INTEGER타입 입니다.'.
WRITE : TEXT1, L_NUM1 left-justified, 50(30) TEXT2.
TEXT1 = '숫자'.
L_NUM2 = 4 / 3 * -1.
TEXT2 = ' 은 PACKED NUMBER타입 입니다.'.
WRITE : / TEXT1, L_NUM2 left-justified, 50(30) TEXT2.
TEXT1 = '숫자'.
L_NUM3 = 4 / 3 * -1.
TEXT2 = ' 은 PACKED NUMBER타입 입니다.'.
WRITE : / TEXT1, L_NUM3 left-justified, 50(30) TEXT2.
TEXT1 = '숫자'.
L_NUM4 = 4 / 3 * -1.
TEXT2 = ' 은 PACKED NUMBER타입 입니다.'.
WRITE : / TEXT1, L_NUM4 left-justified, 50(30) TEXT2.
TEXT1 = '숫자'.
L_NUM5 = 4 / 3 * -1.
TEXT2 = ' 은 FLOAT타입 입니다.'.
WRITE : / TEXT1, L_NUM5 left-justified, 50(30) TEXT2. -
보나
2009.03.31 01:34
소스중 L_NUM5 TYPE F. 중 F 위에커서 두시고 F1 한번 눌러보시면
Built-In ABAP Types 에 대한 아~주 자세한 정보를 얻으실 수 있습니다.
-
신조
2009.03.31 01:37
text1 = '숫자'.
l_num1 = 100.
text2 = '은 Integer 타입입니다.'.
WRITE: text1(15), l_num1, text2.
text1 = '숫자 '.
l_num2 = 4 / 3 .
text2 = '은 packed number 타입입니다.'.
WRITE: / text1(10), l_num2, text2.
text1 = '숫자 '.
l_num3 = CEIL( 4 / 3 ) .
text2 = '은 packed number 타입입니다.'.
WRITE: / text1(11), l_num3, text2.
text1 = '숫자 '.
l_num4 = 4 / 3 .
text2 = '은 packed number 타입입니다.'.
WRITE: / text1(8), l_num4, text2.
text1 = '숫자 '.
l_num5 = 4 / 3 .
text2 = '은 float 타입입니다.'.
WRITE: / text1(20), l_num5, text2.
이렇게 해도 되긴 되네요..
-
쭈니
2009.03.31 01:44
아 많은 정보 감사합니다~ 교제와 같은 결과가 나오리라 생각했던 제가 어리석은거 같았습니다.
그래도 실전에서 그렇게 요구하는 경우도 생기지 않을까 하는 생각에 여러분들께 도움을 요청해보았는데, 이렇게 정성껏 도움을 주셨네요.
다시 한번 감사드리구요~ 보나님말씀처럼 f1을 통해서 다시 한번 정보를 알아보겠습니다~
-
쭈니
2009.03.31 02:28
신조님의 로직으로도 해보았고 보나님의 로직대로도 해보면서 이렇게 하면 되는구나하고 하나 배웠습니다.
신조님의 로직으로 해본결과는 값에서부터 정렬은 되어 값이 나오더라구요. 근데 제가 TEXT도 정렬이 되어 나오는지 지금 해보는중입니다.
해보고 다 정렬이 된다면 답변 다시 올리겠습니다. 보나님의 로직으로 해보았는데 I타입과 P타입은 정렬이 되었으나, F타입은 초기에 나오는 값 위치가 틀린거 같다라는 생각이 들었습니다. * - 1이 부분을 빼고 해보았더니 느껴지더라구요. 감사합니다~
-
보나
2009.03.31 02:33
추가)
1. 신조님 로직 중에 찾아보실내용 'CEIL' (F1)
2. 정렬에는 left-justified 말고도 더 있습니다. (F1)
3. write 에서 위치를 지정하는 text(20) 혹은 50(30) text2 의 숫자나 괄호 등을 변경하시면서 차이점을 비교해보세요
-
Will
2009.06.23 21:07
좋은정보 감사합니다 ^^
책에서는 줄맞춰서 나온거구요..책처럼 구현할려면 음..
Write: (20) TEXT1형태로 들여쓰기를 해야하는 데, 책처럼 할려면 시행착오를 겪어야..ㅠ.ㅠ