2010 Oct 06 9:57 AM
Hi Gurus,
In Report I have 2 fields - PRICE and OFFSET
Let PRICE = 1234.567
Suppose the value of OFFSET= 1 ; then Price value should get displayed as 12345.670
Suppose the value of OFFSET= 2 ; then Price value should get displayed as 123456.700
Suppose the value of OFFSET= 3 ; then Price value should get displayed as 1234567.000
We dont know what will be the range of Offset values .
How to achive this?
Avi.
2010 Oct 06 1:43 PM
Hi,
with the offset, the default field length may be unsufficient. Perhaps you will need to give another length, like (12) in the following example:
DATA: PRICE(4) TYPE P DECIMALS 3.
DATA: OFFSET TYPE I.
DATA: NEG_OFFSET TYPE I.
PRICE = '1234.567'.
OFFSET = 1.
NEG_OFFSET = - OFFSET.
WRITE: / 'PRICE =', (12) PRICE ROUND NEG_OFFSET NO-GROUPING.
OFFSET = 2.
NEG_OFFSET = - OFFSET.
WRITE: / 'PRICE =', (12) PRICE ROUND NEG_OFFSET NO-GROUPING.
OFFSET = 3.
NEG_OFFSET = - OFFSET.
WRITE: / 'PRICE =', (12) PRICE ROUND NEG_OFFSET NO-GROUPING.
Hi Gurus,
In Report I have 2 fields - PRICE and OFFSET
Let PRICE = 1234.567
Suppose the value of OFFSET= 1 ; then Price value should get displayed as 12345.670
Suppose the value of OFFSET= 2 ; then Price value should get displayed as 123456.700
Suppose the value of OFFSET= 3 ; then Price value should get displayed as 1234567.000
We dont know what will be the range of Offset values .
How to achive this?
Avi.
2010 Oct 06 10:26 AM
hi,
you caN SET CONDITIONNAL offset .
according to offset value 1,2, or 3 .
regards
Deepak.
2010 Oct 06 10:27 AM
data : offset type i,
price type p decimals 2,
value type p decimals 2.
value = price * ( 10 ** OFFSET ).
Hope it helps.
Sujay
2010 Oct 06 10:37 AM
Hi Avi,
Actually Offset value means the place which starts from decimal point. so here 1234.567 offset starts between 4 and 5.If u give an offset value say 1 the point wil move right by 1 i.e., 12345.67 it means offset is between 5 and 6. it follows for further numbers.
2010 Oct 06 11:52 AM
2010 Oct 06 1:23 PM
Hi
try this logic code.
PARAMETERS : offset TYPE i.
PARAMETERS : field1 TYPE p DECIMALS 3.
DATA : dummy TYPE string.
DATA : string TYPE string.
DATA : len TYPE i.
DATA : pos TYPE i.
DATA : char TYPE c.
string = field1.
len = STRLEN( string ).
WHILE pos < len.
IF string+pos(1) NE '.'.
char = string+pos(1).
CONCATENATE dummy char INTO dummy.
ENDIF.
pos = pos + 1.
CLEAR char.
ENDWHILE.
IF offset = 1.
CONCATENATE dummy '0' INTO dummy.
len = STRLEN( dummy ).
len = len - 3.
CONCATENATE dummy0(len) '.' dummylen(3) INTO dummy.
ELSEIF offset = 2.
CONCATENATE dummy '00' INTO dummy.
len = STRLEN( dummy ).
len = len - 3.
CONCATENATE dummy0(len) '.' dummylen(3) INTO dummy.
ELSEIF offset = 3.
CONCATENATE dummy '000' INTO dummy.
len = STRLEN( dummy ).
len = len - 3.
CONCATENATE dummy0(len) '.' dummylen(3) INTO dummy.
ENDIF.
field1 = dummy.
WRITE : field1.
2010 Oct 06 1:33 PM
hI,
please try the following code:
DATA: NEG_OFFSET TYPE I.
NEG_OFFSET = - OFFSET.
WRITE: / 'PRICE =', PRICE ROUND NEG_OFFSET NO-GROUPING.
2010 Oct 06 1:43 PM
Hi,
with the offset, the default field length may be unsufficient. Perhaps you will need to give another length, like (12) in the following example:
DATA: PRICE(4) TYPE P DECIMALS 3.
DATA: OFFSET TYPE I.
DATA: NEG_OFFSET TYPE I.
PRICE = '1234.567'.
OFFSET = 1.
NEG_OFFSET = - OFFSET.
WRITE: / 'PRICE =', (12) PRICE ROUND NEG_OFFSET NO-GROUPING.
OFFSET = 2.
NEG_OFFSET = - OFFSET.
WRITE: / 'PRICE =', (12) PRICE ROUND NEG_OFFSET NO-GROUPING.
OFFSET = 3.
NEG_OFFSET = - OFFSET.
WRITE: / 'PRICE =', (12) PRICE ROUND NEG_OFFSET NO-GROUPING.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |