Skip to content

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:

IDX_NAME
Component name
IDX_USER_TYPE
Name of a user-defined type, in other words a type defined by a TYPES statement. Derived types (... TYPE A-B) and structures from ABAP Dictionary are not considered to be user-defined types.
CONTEXT
For user-defined types only: The context in which the type is defined. Possible values are defined in the constant SYDES_CONTEXT of the type group SYDES. Only use these constants to carry out a comparison. The following type contexts are distinguished:

SYDES_CONTEXT-PROGRAM: Program-global type
SYDES_CONTEXT-FORM : FORM-local type
SYDES_CONTEXT-FUNCTION: FUNCTION-local type
SYDES_CONTEXT-METHOD : METHOD-local type
IDX_CONTEXT_NAME
For user-defined types only:
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.
IDX_EDIT_MASK
Conversion routine from ABAP Dictionary, like the addition EDIT MASK in a simple DESCRIBE.
IDX_HELP_ID
Help ID when referencing fields from ABAP Dictionary
LENGTH
Internal length, like the addition LENGTH in a simple DESCRIBE
OUTPUT_LENGTH
Output length, like the addition OUTPUT-LENGTH in a simple DESCRIBE
DECIMALS
Number of decimal digits, like the addition DECIMALS in a simple DESCRIBE
TYPE
ABAP type, like the addition 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).
TABLE_KIND
A table category is stored here for the components which represent an internal table. The same values are returned as with the variant DESCRIBE TABLE itab KIND k. For components which do not represent a table, the return code is set to SYDES_KIND-UNDEFINED (see type group SYDES).


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:

   |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

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