Show TOC

 Predefined ABAP TypesLocate this document in the navigation structure


In the ABAP language, there are types that are predefined in every ABAP program. The table below shows the predefined ABAP types.

Type Length Standard length Description


One byte

One byte integer (internal)


1 to 65,535 characters

One character

Text field


As i

As i

Database cursor


Eight characters

Date field (format YYYYMMDD)


Eight bytes

Decimal floating point number with 16 decimal places


sixteen bytes

Decimal floating point number with 34 decimal places


Eight bytes

Binary floating point number with 16 decimal places


Four bytes

Four byte integer


1 to 65,535 characters

One character

Numeric text


1 to 16 bytes

Eight bytes

Packed number (implementation depends on hardware platform)



Text string


Two bytes

Two byte integer (internal)


Six characters

Time field (format HHMMSS)


1 to 65,535 bytes

One byte

Byte field



Byte string

  • All predefined types in this table are elementary.
  • The predefined ABAP types can also be used to define your own data types and data objects. The data types b and s are an exception. They are internal types and cannot be specified either statically or dynamically in ABAP statements. Self-defined data types and data objects in ABAP programs are of the data type b and s if they are defined with reference to data elements to the ABAP Dictionary which are of the external data types INT1 or INT2.
  • The program-globally predefined data type cursor is currently synonymous with the predefined ABAP type i. This is required for the declaration of a cursor variable for database cursor handling.
  • The entries in the standard length column specify the length that is used for the corresponding generic data type when declaring data objects, if no explicit length is specified in the relevant statement.

The predefined ABAP types decfloat34 and decfloat16.

The information below describes the attributes of these data types.

The value range is 1-1E+370 to -1E-398, 0, +1E-398 to +1E+370-1 for decfloat16 and 1-1E+6112 to -1E-6176, 0, +1E-6176 to 1E+6112-1 for decfloat34. The maximum precision is 16 decimal places or 34 decimal places, respectively.

Decimal floating point numbers with fractional portions or exponents cannot be declared directly in the program; instead, you have to use text literals whose content can be interpreted as a number. That is, a number in a mathematical, scientific, or commercial notation.

We recommend decimal floating point numbers if precision and a large range of values are of importance. They do not have the disadvantages of binary floating point numbers. These binary floating point numbers cannot represent each decimal number in their value range exactly. Decimal floating point numbers have a much larger value range and a higher level of precision than packed numbers. When you have to save space (main memory and database), use the decfloat16 type instead of decfloat34.

By using the EXACT addition of the COMPUTE statement, it is possible to force an exact calculation for decimal floating point numbers under certain circumstances. No rounding is permitted in exact calculations and it leads to an exception.

Internally, decimal floating point numbers are represented by a 16-digit or 34 digit decimal mantissa and a decimal exponent. The exponent is between -383 and +384 or -6143 and + 6144, respectively.