ARTICLE
Source Field Type decfloat16 , decfloat34
If the source field does not contain a valid decimal floating point
number, the treatable exception CX_SY_CONVERSION_NO_NUMBER is
raised, except in the case of the assignment to another decimal floating
point number. In ABAP, invalid decimal floating point numbers also
include the special values "+Infinity" , "-Infinity" ,
"NaN" , and "sNaN" , which represent infinity or invalid numbers
and are designated in the IEEE-754-2008 standard.
Numeric Target Fields
Target Conversion
i ,
int8 ,
( b , s )The value of the decimal floating point number is
rounded up to the nearest integer. If this number is within the
value range for the data type i ,
int8 ,
( b , s ), it is converted to the internal representation of
the corresponding integer number. If the number is not within this
range, the treatable exception CX_SY_CONVERSION_OVERFLOW occurs.
p The value of the decimal floating point number is rounded to
the number of decimal places in
the target field. If this number is within the value range for the data
type of the target field, it is converted to the internal representation
of a packed number. If the number is not within this range, the
treatable exception CX_SY_CONVERSION_OVERFLOW occurs.
decfloat16 , decfloat34 If an assignment is made to the
same data type, the content is passed unconverted. For an assignment
from decfloat34 to decfloat16 the mantissa is shortened
from 34 to 16 places, and commercially rounded if necessary. If the
mantissa of the target field is long enough, the
scaling is preserved. If the value range
of decfloat16 is exceeded, the treatable exception
CX_SY_CONVERSION_OVERFLOW is raised.
f fThe value of the decimal floating point number is applied
in the value of a binary floating point number. If the decimal number
cannot be represented as a binary floating point number, the nearest
value is used. If the value is outside the value range for floating
point numbers, the handleable exception CX_SY_CONVERSION_OVERFLOW
is raised.
Character-Like Target Fields
Target Conversion
c The content of the source field is first converted into a
mathematical or
scientific notation , as described
for the data type string . The result of this conversion is then
copied, right-justified into the target field. If the target field is
longer than the text string, the space to the left is filled with blank
spaces. If the target field is shorter than the text string,
mathematical notation is converted into scientific notation and if
necessary the mantissa is commercially rounded. If the length is not
sufficient for at least one digit of the mantissa, the treatable
exception CX_SY_CONVERSION_OVERFLOW is raised.
string If the exponent of the decimal floating point number is
less than 0 and the absolute value of the number is bigger than 1E-6,
the floating point number is formatted as follows into
mathematical notation without
spaces: The numerical sequence is made up of the mantissa of the decimal
floating point number without leading zeros. If the exponent of the
decimal floating point number is smaller than 0, a decimal point is
inserted at the corresponding position. If the exponent of the decimal
floating point number is bigger than 0 or the absolute value of the
number is smaller than 1E-6, the floating point number is formatted as
follows into scientific notation :
The mantissa is made up of the mantissa of the decimal floating point
number without leading zeros. If the mantissa contains more than one
decimal place, a decimal point is inserted after the first place. The
exponent is always displayed with algebraic sign and without leading
zeros. In both depictions the algebraic sign is displayed for negative
values but not for positive. Both depictions are also used if the value
of the decimal floating point number is zero. The maximum length of the
target field is 24 for decfloat16 and 42 for decfloat34 .
n The value of the decimal floating point number is rounded up
to the nearest integer. The absolute value is transferred as a character
string right-aligned to the target field. If the target field is longer
than the character string, the field is filled with zeros from the left.
If it is too short, the treatable exception
CX_SY_CONVERSION_OVERFLOW is raised.
d The content of the source field is first converted to the
data type i (see above), and then to the type d (see the
conversion table for source field type
i ,
int8 ,
( b , s ) ).
t The content of the source field is first converted to the
data type i (see above), and then to the type t (see the
conversion table for source field type
i ,
int8 ,
( b , s ) ).
Notes
The conversion rule for floating point numbers to text strings is as
follows: a text string filled by the assignment of a decimal floating
point number produces the same internal representation as in the
original decimal floating point number (preserves the
scaling ).
The formatting options STYLE for the
statement WRITE ... TO and
STYLE for
embedded expressions in
string templates of
string expressions provide additional formats
for the assignment of decimal floating point numbers to text strings.
Examples
The following table shows how decimal floating point numbers are
converted to text strings:
Floating point number Text string
123E+0123
123E+11.23E+3
2E+1 2E+1
1230E-2 12.30
5E-6 0.000005
50E-7 0.0000050
5E-7 5E-7
50E-8 5.0E-7
-0E+0 -0
0E-100 0E-100
Byte-Like Target Fields
Target Conversion
x The content of the source field is first converted to the
data type i (see above), and then to the type x (see the
conversion table for source field type
i ,
int8 ,
( b , s ) ).
xstring The content of the source field is first converted to
the data type i (see above), and then to the type x (see
the conversion table for source field type
i ,
int8 ,
( b , s ) ).
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved