ROUND( ) – function in HANA SQL SCRIPT
In most of the calculations, rounding is applied to the decimal numbers to round the values to the nearest number.
Syntax- ROUND(<number> [, <position> [, <rounding_mode>]]
<number>– numeric argument .
<position>– the amount of places after the decimal point to round <number> . Default value is 0. A positive number rounds to the specified position to the right of the decimal point and negative number rounds to the specified position to the left of the decimal point .
<rounding_mode> –
ROUND_HALF_UP
ROUND_HALF_DOWN
ROUND_HALF_EVEN
ROUND_UP
ROUND_DOWN
ROUND_CEILING
ROUND_FLOOR
ROUND_HALF_UP– The value is rounded up to the next round figure. This is the default.
If the value falls precisely halfway between two rounded values, it is rounded up away from zero (as is done in commercial rounding).
ROUND_HALF_DOWN– The value is rounded down to the next round figure. If the value falls precisely halfway between two round values, it is rounded down towards zero.
ROUND_HALF_EVEN– The value is rounded to the next round figure. If the value falls precisely halfway between two rounded values, it is rounded to the value whose last decimal place is an even number.
ROUND_UP– The value is always rounded away from zero, to the larger round figure.
ROUND_DOWN– The value is always rounded towards zero, to the smaller round figure.
ROUND_CEILING– The value is always rounded in a positive direction, to the larger value.
ROUND_FLOOR– The value is always rounded in a negative direction, to the smaller value.
Below is an AMDP Procedure with round function applied on decimal number and the result provided in the comment part of each line.
CLASS zcl_amdp_explore DEFINITION PUBLIC FINAL CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES: if_amdp_marker_hdb.
CLASS-METHODS: get_info EXPORTING VALUE(et_spfli) TYPE spfli_tab
RAISING cx_amdp_error.
ENDCLASS.
CLASS zcl_amdp_explore IMPLEMENTATION.
METHOD get_info BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT USING spfli.
— Syntax- ROUND(<number> [, <position> [, <rounding_mode>]])
lt_v111 = SELECT ROUND (111.38, 1, ROUND_HALF_UP ) “val” FROM DUMMY; — (111.40)
lt_v112 = SELECT ROUND (111.38, 1, ROUND_HALF_DOWN ) “val” FROM DUMMY; — (111.40)
lt_v113 = SELECT ROUND (111.38, 1, ROUND_HALF_EVEN ) “val” FROM DUMMY; — (111.40)
lt_v114 = SELECT ROUND (111.38, 1, ROUND_UP ) “val” FROM DUMMY; — (111.40)
lt_v115 = SELECT ROUND (111.38, 1, ROUND_DOWN ) “val” FROM DUMMY; — (111.30)
lt_v116 = SELECT ROUND (111.38, 1, ROUND_CEILING ) “val” FROM DUMMY; — (111.40)
lt_v117 = SELECT ROUND (111.38, 1, ROUND_FLOOR ) “val” FROM DUMMY; — (111.30)
lt_v118 = SELECT ROUND (-111.38, 1, ROUND_UP ) “val” FROM DUMMY; — (-111.40)
lt_v119 = SELECT ROUND (-111.38, 1, ROUND_DOWN ) “val” FROM DUMMY; — (-111.30)
lt_v120 = SELECT ROUND (-111.38, 1, ROUND_CEILING ) “val” FROM DUMMY; — (-111.30)
lt_v121 = SELECT ROUND (-111.38, 1, ROUND_FLOOR ) “val” FROM DUMMY; — (-111.40)
lt_v221 = SELECT ROUND (111.35, 1, ROUND_HALF_UP ) “val” FROM DUMMY; — (111.40)
lt_v222 = SELECT ROUND (111.35, 1, ROUND_HALF_DOWN ) “val” FROM DUMMY; — (111.30)
lt_v223 = SELECT ROUND (111.35, 1, ROUND_HALF_EVEN ) “val” FROM DUMMY; — (111.40)
lt_v224 = SELECT ROUND (111.35, 1, ROUND_UP ) “val” FROM DUMMY; — (111.40)
lt_v225 = SELECT ROUND (111.35, 1, ROUND_DOWN ) “val” FROM DUMMY; — (111.30)
lt_v226 = SELECT ROUND (111.35, 1, ROUND_CEILING ) “val” FROM DUMMY; — (111.40)
lt_v227 = SELECT ROUND (111.35, 1, ROUND_FLOOR ) “val” FROM DUMMY; — (111.30)
lt_v228 = SELECT ROUND (-111.35, 1, ROUND_UP ) “val” FROM DUMMY; — (-111.40)
lt_v229 = SELECT ROUND (-111.35, 1, ROUND_DOWN ) “val” FROM DUMMY; — (-111.30)
lt_v230 = SELECT ROUND (-111.35, 1, ROUND_CEILING ) “val” FROM DUMMY; — (-111.30)
lt_v231 = SELECT ROUND (-111.35, 1, ROUND_FLOOR ) “val” FROM DUMMY; — (-111.40)
lt_v331 = SELECT ROUND (111.32, 1, ROUND_HALF_UP ) “val” FROM DUMMY; — (111.30)
lt_v332 = SELECT ROUND (111.32, 1, ROUND_HALF_DOWN ) “val” FROM DUMMY; — (111.30)
lt_v333 = SELECT ROUND (111.32, 1, ROUND_HALF_EVEN ) “val” FROM DUMMY; — (111.30)
lt_v334 = SELECT ROUND (111.32, 1, ROUND_UP ) “val” FROM DUMMY; — (111.40)
lt_v335 = SELECT ROUND (111.32, 1, ROUND_DOWN ) “val” FROM DUMMY; — (111.30)
lt_v336 = SELECT ROUND (111.32, 1, ROUND_CEILING ) “val” FROM DUMMY; — (111.40)
lt_v337 = SELECT ROUND (111.32, 1, ROUND_FLOOR ) “val” FROM DUMMY; — (111.30)
lt_v338 = SELECT ROUND (-111.32, 1, ROUND_UP ) “val” FROM DUMMY; — (-111.40)
lt_v339 = SELECT ROUND (-111.32, 1, ROUND_DOWN ) “val” FROM DUMMY; — (-111.30)
lt_v340 = SELECT ROUND (-111.32, 1, ROUND_CEILING ) “val” FROM DUMMY; — (-111.30)
lt_v341 = SELECT ROUND (-111.32, 1, ROUND_FLOOR ) “val” FROM DUMMY; — (-111.40)
lt_v441 = SELECT ROUND (115.38, 1 ) “val” FROM DUMMY; — (115.40)
lt_v442 = SELECT ROUND (115.38, -1 ) “val” FROM DUMMY; — (120.00)
et_spfli = SELECT * FROM spfli WHERE mandt = session_context( ‘CLIENT’ );
ENDMETHOD.
ENDCLASS.