ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Attributes of Data Objects → DESCRIBE → DESCRIBE - internal variant
DESCRIBE FIELD INTO
Other versions: 7.31 | 7.40 | 7.54
This statement is for internal use only. It must not be used in application programs.
Syntax
DESCRIBE FIELD dobj INTO td.
Effect
All attributes of the field f
, its components, subcomponents, and so on,
are in the output of the field td
(type description). td
must have the type SYDES_DESC, defined in the
type group SYDES.
The structure SYDES_DESC has two table-like components TYPES and NAMES:
-
The tree structure of the type belonging to
f
is mapped to TYPES. The components of a node are stored in the table TYPES in a continuous manner. The beginning and end of the row area that represents the components are stored in TYPES-FROM and TYPES-TO. The reference to the superior node can be found in TYPES-BACK. If no superior or subordinate node exists, then this is marked by the value 0 (for the relevance of further components, see the following sections). -
The names of components, types, and so on. are not stored directly in TYPES. Instead, the components
TYPES-IDX_... hold an index in the name table NAMES. The value 0 indicates that there is no reference to the name table.
NAMES contains the names in the component NAMES-NAME, possibly in parts. If a name continues in the following row, this is indicated by an asterisk ('*') in the component NAMES-CONTINUE.
The type description table (TYPES) not only stores information about the tree structure but also further
information about the type of f
or its components. In particular, this includes
all information that can be determined using the usual additions of DESCRIBE FIELD
. In detail, TYPES contains the following columns:
SYDES_CONTEXT-PROGRAM: Program-global type
SYDES_CONTEXT-FORM :
FORM
-local type SYDES_CONTEXT-FUNCTION:
FUNCTION
-local type SYDES_CONTEXT-METHOD :
METHOD
-local type In a local context: The name of the
FORM
or FUNCTION
in which the type was defined. The name of the associated program is then the first entry in the name table. In a global context: The name of the program in which the type was defined.
EDIT MASK
in a simple DESCRIBE
. LENGTH
in a simple DESCRIBE
OUTPUT-LENGTH
in a simple DESCRIBE
DECIMALS
in a simple DESCRIBE
TYPE
in a simple DESCRIBE
. If DESCRIBE INTO
is applied to a nested structure which contains a
boxed component, the type is returned with the internal ID j
(static box).
Example
Take the following definition of the complex data type EMPLOYEE_STRUC:
PROGRAM DESCTEST.
TYPES: BEGIN OF name_struc,
first TYPE c LENGTH 20,
last TYPE c LENGTH 20,
END OF name_struc,
BEGIN OF absence_time_struc,
day TYPE d,
from TYPE t,
to TYPE t,
END OF absence_time_struc,
phone_number TYPE n LENGTH 20,
BEGIN OF employee_struc,
id LIKE sbook-customid,
name TYPE name_struc,
BEGIN OF address,
street TYPE c LENGTH 30,
zipcode TYPE n LENGTH 4,
place TYPE c LENGTH 30,
END OF address,
salary_per_month TYPE p LENGTH 10 DECIMALS 3,
absent TYPE STANDARD TABLE OF absence_time_struc
WITH NON-UNIQUE DEFAULT KEY,
phone TYPE STANDARD TABLE OF phone_number
WITH NON-UNIQUE DEFAULT KEY,
END OF employee_struc.
The structure of the type can be determined by collecting the type group SYDES as follows:
DATA: employee TYPE employee_struc,
td TYPE sydes_desc.
DESCRIBE FIELD employee INTO td.
The following table shows a few selected columns of the type description table TD-TYPES. To make it easier to read, the names of the columns IDX_NAME, IDX_UERR_TYPE, and IDX_EDIT_MASK have been shortened:
---|----|----|----|----|----|----|----
01 | 2 | 7 | 0 | 0 | 2 | 0 | v
02 | 0 | 0 | 1 | 6 | 0 | 4 | N
03 | 8 | 9 | 1 | 7 | 5 | 0 | u
04 | 10 | 12 | 1 | 8 | 0 | 0 | u
05 | 0 | 0 | 1 | 9 | 0 | 0 | P
06 | 13 | 13 | 1 | 11 | 0 | 0 | h
07 | 17 | 17 | 1 | 12 | 0 | 0 | h
08 | 0 | 0 | 3 | 13 | 0 | 0 | C
09 | 0 | 0 | 3 | 14 | 0 | 0 | C
10 | 0 | 0 | 4 | 15 | 0 | 0 | C
11 | 0 | 0 | 4 | 16 | 0 | 0 | N
12 | 0 | 0 | 4 | 17 | 0 | 0 | C
13 | 14 | 16 | 6 | 0 | 18 | 0 | u
14 | 0 | 0 | 13 | 20 | 0 | 0 | D
15 | 0 | 0 | 13 | 21 | 0 | 0 | T
16 | 0 | 0 | 13 | 22 | 0 | 0 | T
17 | 0 | 0 | 7 | 0 | 0 | 0 | N
Note that the entries in rows 6 and 7 represent internal tables (ABAP type h). In an internal table, there is always an entry for the associated row type (rows 13 and 17).
The indexes in the rows 5 to 7 refer to entries in the name table TD-NAMES. Taking, for example,
row 3, the associated component name in TD-NAMES is found from row 7 (NAME) onward and the associated user type from row 5 (NAME_STRUC) onward.
The name table TD-NAMES contains the following entries. Note that the names SALARY_PER_MONTH and ABSENCE_TIME_STRUC are stored in two parts:
|CONTINUE|NAME |CONTINUE|NAME
---|--------|-------------- ----|--------|--------------
01 | |DESCTEST 12 | |PHONE
02 | |EMPLOYEE_STRUC 13 | |FIRST
03 | |SBOOK-CUSTOMID 14 | |LAST
04 | |==ALPHA 15 | |STREET
05 | |NAME_STRUC 16 | |ZIPCODE
06 | |ID 17 | |PLACE
07 | |NAME 18 | * |ABSENCE_TIME_ST
08 | |ADDRESS 19 | |RUC
09 | * |SALARY_PER_MONT 20 | |DAY
10 | |H 21 | |FROM
11 | |ABSENT 22 | |TO