예를들어 123,254,112 라는값이 있으면 뒤에 천단위까지는 버리구 123,254,000 으루 만들어주고
싶은데요...어떠케 해야할까요 조언부탁드려요~!!!
댓글 6
-
어린칼
2008.08.22 04:43
-
김지성
2008.08.22 07:21
조금만 생각하시면 될터인데...
입력값이 숫자 이므로 이를 문자 필드로 넣은 다음..전체 길이를 구합니다.
전체 길이에서 -3을 하면 입력한 값 앞에서 6자리가 되겠네요(위의 예에서..물론 입력값이 3자리 이상일 경우겠죠)
그다음 변수에 l_value = l_value+0(l_cnt). 처럼 합니다. l_cnt는 6이겠죠..
이와 같이 하면 입력값이 123,456,789 일경우 l_value에는 123456이 저장됩니다.
여기에 곱하기 1000을 합니다.
그럼 123456000이 되겠죠..자릿수 구분하는 펑션을 이용하고 또한 문자를 숫자를 구하는 펑션을 이용하시면 되구요..
펑션 이용하기가 귀찮으면 123456000 값을 숫자 필드에 넣어주시면 자동으로 천단위 컴마가 붙습니다.
제가 테스트 해 본 소스가 있긴한데..소스를 적는 것보다 직접해보시는 것이 스킬 향상에 도움이 될터라 ...그럼..
참고로 저두 초보 입니다.
-
SSong
2008.08.22 17:09
DATA: INPUT TYPE P DECIMALS 2,
OUTPUT TYPE P DECIMALS 2,
OUTPUT_N TYPE P DECIMALS 2.
INPUT = '123254112'.
CALL FUNCTION 'FIMA_NUMERICAL_VALUE_ROUND'
EXPORTING
* I_RTYPE = ' ' "반올림 "
* I_RTYPE = '+' "올림
I_RTYPE = '-' "버림
I_RUNIT = '1000'
I_VALUE = INPUT
IMPORTING
E_VALUE_RND = OUTPUT.
OUTPUT_N = OUTPUT.
WRITE: / INPUT, OUTPUT, OUTPUT_N.
이렇게도 한번 해보세요 ^^ 반올림 올림 버림을 하는 펑션입니다.
-
CoolGuy
2008.08.22 19:25
감사합니다!!
행복한 하루 되세요^^
-
어린칼
2008.08.22 20:35
ssong님 저런 펑션은 만드는거에요? 아니면 sap사에서 정의해 놓은 것인가요?
만약에 sap사에서 정의해 놓은것이면 어떻게 찾아야 하는지좀 가르쳐 주실수 있으세요?
-
SIMSIMHE
2008.08.22 22:23
감사합니다
도움이 되실지는 모르겠지만 저는 반올림 무시하고 data type Char로 만들었습니다. 저도 초보라서요 -0-;;
REPORT zspike.
"Numeric DataTypes Declaration
data: f1(3) type c value '000',
f2(9) type c value '123456789'.
f2+6(3) = f1.
write:/ f1.
write:/ f2.
조그만 도움이 되었으면 좋겠습니다.