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 characteristics of the f
field, its components, subcomponents, and so
on, are displayed in the td
field (type description). td
must be of type SYDES_DESC, which is defined in
type group SYDES.
The SYDES_DESC structure has two table-like components, TYPES and NAMES:
-
In TYPES, the tree structure of the type belonging to
f
is mapped. The components of a node are stored close together in table TYPES. The beginning and end of the line area that represents the components are stored in TYPES-FROM and TYPES-TO. The reference to the higher-level node can be found in TYPES-BACK. If there is no higher-level or subordinate node, this is indicated by the value 0 (for the meaning of further components, see the following sections). -
The names of components, types, and so on are not stored in TYPES directly. Instead, the components
TYPES-IDX_... each have an index in name table NAMES. The value 0 indicates that there is no reference to the name table.
In component NAMES-NAME, NAMES contains the (possibly fragmented) names. If a name continues in the following line, 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
and its components. This particularly includes
all information that can be determined using the usual additions to DESCRIBE FIELD
. TYPES contains the following columns:
SYDES_CONTEXT-PROGRAM: Program-global type
SYDES_CONTEXT-FORM : Local
FORM
type SYDES_CONTEXT-FUNCTION: Local
FUNCTION
type SYDES_CONTEXT-METHOD : Local
METHOD
type With 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. With a global context: The name of the program in which the type was defined.
EDIT MASK
addition with a simple DESCRIBE
LENGTH
addition with a simple DESCRIBE
OUTPUT-LENGTH
addition with a simple DESCRIBE
DECIMALS
addition with a simple DESCRIBE
TYPE
addition with a simple DESCRIBE
. If DESCRIBE INTO
is applied to a nested structure that contains a
boxed component, the type is returned with the internal ID j
(static box).
Example
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.
You can determine the structure of the type by using 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 type description table TD-TYPES. For a better overview, the names of the columns IDX_NAME, IDX_UERR_TYPE, and IDX_EDIT_MASK have been shortened:
<span class="qtext"> |FROM| TO |BACK|NAME|UTYP|EMSK|TYPE
---|----|----|----|----|----|----|----
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</span>
Note that the entries in rows 6 and 7 represent internal tables (ABAP type h). There is always an entry for the corresponding row type (rows 13 and 17) for an internal table.
The indices in rows 5 to 7 refer to entries in name table TD-NAMES. If you look, for example, at
row 3, you find the corresponding component name in TD-NAMES from row 7 (NAME) onwards and the corresponding user type from row 5 (NAME_STRUC) onwards.
In name table TD-NAMES, you find the following entries. Note that the names SALARY_PER_MONTH and ABSENCE_TIME_STRUC are stored in two parts:
<span class="qtext"> |CONTINUE|NAME |CONTINUE|NAME</span>
<span class="qtext">---|--------|-------------- ----|--------|--------------</span>
<span class="qtext"> 01 | |DESCTEST 12 | |PHONE</span>
<span class="qtext"> 02 | |EMPLOYEE_STRUC 13 | |FIRST</span>
<span class="qtext"> 03 | |SBOOK-CUSTOMID 14 | |LAST</span>
<span class="qtext"> 04 | |==ALPHA 15 | |STREET</span>
<span class="qtext"> 05 | |NAME_STRUC 16 | |ZIPCODE</span>
<span class="qtext"> 06 | |ID 17 | |PLACE</span>
<span class="qtext"> 07 | |NAME 18 | * |ABSENCE_TIME_ST</span>
<span class="qtext"> 08 | |ADDRESS 19 | |RUC</span>
<span class="qtext"> 09 | * |SALARY_PER_MONT 20 | |DAY</span>
<span class="qtext"> 10 | |H 21 | |FROM</span>
<span class="qtext"> 11 | |ABSENT 22 | |TO</span>