Application Development 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: 

rounding off to zero decimal places

Former Member
0 Kudos

hi all,

i have a problem with value rounding to zero decimal places how can i do it.

i have a character field 'value' of length char30, after calculating i have condense it

condense:value. now i have to round the value to zero decimal places how can i do it. value = 499.72 ie, it should display value = 500.

1 ACCEPTED SOLUTION

former_member188827
Active Contributor
0 Kudos

move da value to type p varaible

data zround type p decimals 0.

move zch to zround.

10 REPLIES 10

former_member223537
Active Contributor
0 Kudos

data l_ans type i.

l_data = 499.72.

l_ans = round(l_data).

************************

DATA: X TYPE P DECIMALS 2 VALUE '12493.97'.

WRITE: /X ROUND -2, "output: 1,249,397.00

/X ROUND 0, "output: 12,493.97

/X ROUND 2, "output: 124.94

/X ROUND 5, "output: 0.12

JozsefSzikszai
Active Contributor
0 Kudos

hi,

you can use the FM 'ROUND'.

hope this helps

ec

former_member188827
Active Contributor
0 Kudos

move da value to type p varaible

data zround type p decimals 0.

move zch to zround.

0 Kudos

HI THIS is how i have written but i am getting result in value but when i move it to zvalue the value is not comming.

DATA : V_INTNO(15) TYPE C,

VALUE TYPE CHAR30,

ZVALUE type P DECIMALS 0.

DATA : BEGIN OF ITAB OCCURS 0,

EXBAS LIKE J_1IEXCDTL-EXBAS,

END OF ITAB.

READ TABLE in_tab WITH KEY name = 'J_1IEXCDTL-DOCNO'.

SELECT SUM( EXBAS ) AS EXBAS INTO ITAB-EXBAS FROM J_1IEXCDTL WHERE DOCNO = in_tab-value

AND TRNTYP = '57FC'.

READ TABLE out_tab WITH KEY name = 'V_EXBAS'.

IF sy-subrc = 0.

VALUE = ITAB-EXBAS * '16.48'.

VALUE = VALUE / 100.

CONDENSE: VALUE.

MOVE VALUE TO ZVALUE.

out_tab-value = ZVALUE.

MODIFY out_tab INDEX sy-tabix.

ENDIF.

0 Kudos

try dis:

IF sy-subrc = 0.

VALUE = ITAB-EXBAS * '16.48'.

VALUE = VALUE / 100.

REPLACE ',' in value WITH space.

condense value.

MOVE VALUE TO ZVALUE.

move zvalue to out_tab-value.

MODIFY out_tab INDEX sy-tabix.

ENDIF.

Message was edited by:

abapuser

Former Member
0 Kudos

Hi,

You can use the numerical Function ROUND to round off the decimal places.

round_or_trunc_spec

Syntax Rules for Column Descriptions

Syntax

<round_or_trunc_spec> ::= ROUND <valFRACTION> | TRUNC <valFRACTION>

valFRACTION

Number of decimal places

The value must be between 0 and 18. This function doe not have any effect if the number does not have any decimal places.

Use

Use this syntax rule to specify the number of decimal places in a number.

ROUND <valFRACTION>

The value is rounded off at the (<valFRACTION>1) th decimal place. If this number is >= 5, the value is rounded up. If it is < 5, the value is rounded down. The result is a number in which the (<valFRACTION>1)th and all subsequent decimal places are equal to 0. The other digits in the number may have been changed if the value was rounded up.

DATALOAD TABLE distance

...

cm 7 SCALE 2

cm 7 SCALE -3 ROUND 1

...

INFILE 'meter.data'

TRUNC <valFRACTION>

The (<valFRACTION>+1)th and all subsequent decimal places of the value are set to 0. The first <valFRACTION> decimal places remain unchanged.

DATAEXTRACT * FROM distance

cm 10-14 INTEGER SCALE 2

m 14-17 INTEGER

km 18-21 INTEGER SCALE -3 TRUNC 2

OUTFILE 'dimensions.bin' FORMATTED

Thanks,

Reward If Helpful.

Former Member
0 Kudos

hi abinash,

i will give u sample progam, it consists of all type of conversions.

Pls copy and paste the prg and execute it.

parameters : a type p decimals 3.

data : abs like a,
       ceil like a,
       floor like a,
       trunc like a,
       frac like a,
       sign like a.


abs = abs( a ).
sign = sign( a ).
ceil = ceil( a ).
floor = floor( a ).
trunc = trunc( a ).
frac = frac( a ).


write :   'THE ABSOLUTE VALUE OF     ', a,'IS', abs,

        / 'THE SIGN OF ARGUMENT      ', a,'IS', sign,

        / 'THE SMALLEST INTEGER VALUE', a,'IS', floor,

        / 'THE LARGEST INTEGER VALUE ', a,'IS', ceil,

        / 'THE FRACTION PART         ', a,'IS', frac,

        / 'THE INTEGRAL PART         ', a,'IS', trunc.

<b>Pls reward if helpful.</b>

Former Member
0 Kudos

hi,

data: n type i,<---

x(30).

x = 499.72.

write x to n.<---

revrt back if any issues.

Regards,

Naveen

Former Member
0 Kudos

Hi

<b>Check this :</b>

DATA pack TYPE p VALUE '499.72 '.

WRITE pack NO-GROUPING ROUND 3 DECIMALS 2.

WRITE pack NO-GROUPING ROUND 4 DECIMALS 2.

WRITE pack NO-GROUPING ROUND 5 DECIMALS 4.

WRITE pack NO-GROUPING ROUND 0 DECIMALS 2.

OUTPUT: 0.50 0.05 0.0050 500.00

<b>-Charitha.</b>

Former Member
0 Kudos

THANKS ALL ,

IT SOLVED MY PROBLEM.