ALV의 숫자 필드에서 값이 0이면 0.000이렇게 표시가 됩니다. 이것을 0으로 표시하는 방법 좀 알려주세요.
그리고 숫자가 소수점 세자리까지 있는 경우 예를 들어 9.685는 소수점 아래까지 모두 표시를 해줘야 합니다.
그리고 숫자가 소수점 세자리까지 있는 경우 예를 들어 9.685는 소수점 아래까지 모두 표시를 해줘야 합니다.
댓글 2
-
맑은하늘
2010.10.13 23:22
-
아밥줘
2010.10.14 04:11
바꾸려는 숫자가 금액필드이거나 수량필드여서 qfieldname과 cfieldname을 이용했습니다. cfieldname에 data를 담은 table의 field명을 집어넣고, 해당 field에는 KRW나 USD가 들어가게 하였습니다. 해당 필드가 빈 경우도 존재합니다. 이렇게 하니까. KRW의 값에서는 값에 0이 몇개 더 붙는 것처럼 값이 커지는 것 같고, USD일 때는 소수점 둘째자리까지 항상 보이네요. 그리고 qfieldname에 들어간 field의 값이 L15를 사용했는데 역시 소수점 이하 세자리에 0이 붙어서 나옵니다.
윗부분의 설명대로 제가 제대로 적용했나요? 아직 밑에 나온 conversion-exit는 해보지 않았습니다.
흠... 금액필드이면 통화필드(cfieldname)를 참조하게 하시고
수량필드면 단위필드(qfieldname)를 참조하게 하시면 될 거구요.
이도저도 아니고 셀단위로 보여지는 decimals 가 다 다르게 보여져야
한다면 해당 기능을 수행할 수 있는 conversion_exit~ 을 만드셔셔 field-catalog 의
convexit 에 설정해 주시면 될 것 같구요.
( 생각나는 대로 썼기에 정확하지 않을 수도 있습니다 )
예를 들면 )
0.000 -> 0, 9.800 -> 9.8, 9.860 -> 9.86, 9.865 -> 9.865 같은 경우
1) conversion_exit_zpcon_input
importing input = 9.8 (pass value)
exporting output = ?
data inp type p decimals 3.
transport input using ', '.
condense input no-gaps.
inp = input.
output = inp.
------------------------------------
result 9.8 -> 9.800
9.86 -> 9.860.
0 -> 0.000
2) conversion_exit_zpcon_output.
importing input = 9.800
exporting output = ?
data oup type c length 30.
data len type i.
data int type i.
oup = input.
translate oup using ', '.
shift oup right deleting trailing : space, '0'.
describe field oup length len.
subtrace 1 from len.
if oup+len = '.'.
shift oup right deleteing trailing '.'.
endif.
condense oup no-gaps.
output = oup.
------------------------------------
result : 0.000 -> 0
9.800 -> 9.8
9.860 -> 9.86