ABAP Keyword Documentation → ABAP − Reference → Declarations → Declaration Statements → Data Types and Data Objects → Declaring Data Types → TYPES
TYPES - RANGE OF
Other versions: 7.31 | 7.40 | 7.54
Syntax
TYPES dtype {TYPE RANGE OF type}|{LIKE RANGE OF dobj}
[INITIAL SIZE n].
Effect
Derives a table type for a ranges table. A ranges table is a standard table in which a ranges condition can be saved. It has a standard key and a special structured row type whose internal definition can be represented as follows in ABAP syntax:
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low {TYPE type}|{LIKE dobj},
high {TYPE type}|{LIKE dobj},
END OF linetype.
The additions TYPE
and LIKE
determine the data type of the components low
and high
:
-
type
can be a non-generic data type from ABAP Dictionary, a non-generic public data type of a public data type of a global class, a non-generic data type local to a program, or any ABAP type from the tables of built-in ABAP types. The generic ABAP typesc
,n
,p
, andx
are extended implicitly to the standard length without decimal places from the tables of built-in ABAP types. -
dobj
can be a data object visible at this point, whose type is used for both components. Generically typed formal parameters cannot be specified fordobj
within a procedure.
The addition INITIAL SIZE
is synonymous with the definition of normal internal table types.
A ranges table can be used in a relational expression with the
relational operator IN
or in a
similar expression in a WHERE
condition in ABAP SQL. It is also used for value passing to the
selection screens of an
executable program called using SUBMIT
.
Notes
-
A selection table declared
with
SELECT-OPTIONS
has the same structure as a ranges table. -
The
sign
andoption
columns of a ranges table declared usingRANGE OF
are not related to data types in ABAP Dictionary. For a ranges table defined in ABAP Dictionary, these columns are based on the data elements DDSIGN and DDOPTION.
Example
Defines a table type for a ranges table and its use for an inline declaration of a ranges table on the
left side of a constructor expression with the value operator VALUE
.
TYPES carrid_range TYPE RANGE OF spfli-carrid.
DATA(carrid_range) = VALUE carrid_range(
( sign = 'I' option = 'BT' low = 'AA' high = 'LH') ).
SELECT *
FROM spfli
WHERE carrid IN @carrid_range
INTO TABLE @DATA(spfli_tab).