Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Decimal Places Issue

Former Member
0 Likes
1,179

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,132

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,

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.


7 REPLIES 7
Read only

deepak_dhamat
Active Contributor
0 Likes
1,132

hi,

you caN SET CONDITIONNAL offset .

according to offset value 1,2, or 3 .

regards

Deepak.

Read only

Former Member
0 Likes
1,132

data : offset type i,

price type p decimals 2,

value type p decimals 2.

value = price * ( 10 ** OFFSET ).

Hope it helps.

Sujay

Read only

Former Member
0 Likes
1,132

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.

Read only

0 Likes
1,132

Hi

How can i set a conditional OFFSET?

Avi

Read only

Former Member
0 Likes
1,132

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.

Read only

Former Member
0 Likes
1,132

hI,

please try the following code:



DATA: NEG_OFFSET TYPE I.

NEG_OFFSET = - OFFSET.
WRITE: / 'PRICE =', PRICE ROUND NEG_OFFSET NO-GROUPING.

Read only

Former Member
0 Likes
1,133

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.