SAP DESCRIBE FIELD ABAP Statements

Get Example source ABAP code based on a different SAP table
  


Standard SAP Help for DESCRIBE_FIELD

DESCRIBE FIELD

Short Reference
• DESCRIBE FIELD ABAP Statement


ABAP Syntax DESCRIBE FIELD dobj

[TYPE typ [COMPONENTS com]]
[LENGTH ilen IN {BYTE|CHARACTER} MODE]
[DECIMALS dec]
[OUTPUT-LENGTH olen]
[HELP-ID hlp]
[EDIT MASK mask].

ABAP Addition
1 ... TYPE typ [COMPONENTS com]
2 ... LENGTH ilen IN {BYTE|CHARACTER} MODE
3 ... DECIMALS dec
4 ... OUTPUT-LENGTH olen
5 ... HELP-ID hlp
6 ... EDIT MASK mask

What does it do? This statement determines several properties of the data object dobj and assigns them to the specified target fields. The following can be specified as target fields of each addition: Existing variables to which the return value can be converted. Inline declarations DATA(var).

The various additions enable the data type and the number of components for structures, the length used in the memory, the number of decimal places, the output length, the name of the data type for a reference to a data element in ABAP Dictionary, and a possible conversion routine to be determined.

Latest notes:Field symbols or formal parameters can be specified in procedures for dobj to determine the properties of the data object they represent when the statement is executed. The statement DESCRIBE is used to determine the properties of data objects of elementary data types. When DESCRIBE is used for structures or data objects of deep data types like strings, internal tables, or reference variables, only elementary properties can be determined. Further details, for example, the static or dynamic type of a reference variable cannot be determined using DESCRIBE. For this kind of information, use the type description classes of runtime type services ( RTTS). These enable all data object properties of all data types to be determined.
• TYPE DESCRIBE FIELD
• COMPONENTS DESCRIBE FIELD

ABAP Addition

What does it do? Determines the data type of the data object dobj. The return value is a single character character-like ID. In an inline declaration, a variable of the type c with length 1 is declared. The following tables list the assignment of return values for all possible data types. The ID is case-sensitive. Numeric Data TypeID
bb
ss
iI
int88
pP
decfloat16a
decfloat34e
fF
Character-Like Data TypeID
cC (exception, refer to note below)
stringg
nN
dD
tT
Byte-Like Data TypeID
xX
xstringy
Reference TypeID
Data referencel
Object referencer
Complex TypeID
Flat structureu (exception, refer to note below)
Deep structurev (exception, refer to note below)
Internal tableh

The addition COMPONENTS determines the number of direct components of the data object dobj. The return value has the type i. In an inline declaration, a variable of the type i is declared. If the data object dobj is not a structure, the value 0 is returned. If dobj is a nested structure, only the components of the highest hierarchy level are counted.

Latest notes:If the addition COMPONENTS is not used, the addition TYPE in non-Unicode programs returns the value 'C' instead of 'u' or 'v' for any structures.
If DESCRIBE FIELD is applied directly to a static box, its data type according to the above table is returned and not the internal ID j for the boxed component.



Example ABAP Coding
For the deep nested structure
struc1, the type ID 'v' and three components are determined. For the flat structure struc2, the type ID 'u' and two components are determined. DATA: BEGIN OF struc1,
comp1 TYPE c LENGTH 1,
comp2 TYPE string,
BEGIN OF struc2,
comp1 TYPE c LENGTH 1,
comp2 TYPE i,
END OF struc2,
END OF struc1.

DESCRIBE FIELD: struc1 TYPE DATA(typ1) COMPONENTS DATA(comp1),
struc1-struc2 TYPE DATA(typ2) COMPONENTS DATA(comp2).
• LENGTH DESCRIBE FIELD
• IN BYTE MODE DESCRIBE FIELD
• IN CHARACTER MODE DESCRIBE FIELD

ABAP Addition

What does it do? Determines the length used directly by the data object dobj in the memory in bytes or characters depending on the addition MODE. The return value has the type i. In an inline declaration, a variable of the type i is declared.

The addition MODE must be specified in Unicode programs. The variant with the addition IN BYTE MODE determines the length of the data object dobj in bytes. The variant with the addition IN CHARACTER MODE determines the length of the data object dobj in characters. When using IN CHARACTER MODE, the data type of dobj must be flat and character-like. For deep data types, only IN BYTE MODE can be specified. This always determines the length of the references involved (eight bytes for each reference).

In non-Unicode programs, LENGTH can be used without the addition MODE. In this case, the addition IN BYTE MODE is used implicitly.



Latest notes:For data objects with a fixed length, the length is
determined that is specified when the data object is created. To determine the used length of character-like data objects without counting the trailing blanks, the predefined function strlen can be used.



Example ABAP Coding
Calculation of bytes required for the representation of
one character. The result is greater than 1 in multi-byte systems. DATA: text TYPE c LENGTH 1,
bytes TYPE i.

DESCRIBE FIELD text LENGTH DATA(blen) IN BYTE MODE.
DESCRIBE FIELD text LENGTH DATA(clen) IN CHARACTER MODE.

bytes = blen / clen.
• DECIMALS DESCRIBE FIELD

ABAP Addition

What does it do? Determines the number of places in the fractional portion of the data object dobj. The return value has the type i. In an inline declaration, a variable of the type i is declared.



Latest notes:Only data objects of the data type p can have
decimal places. Therefore, the result in dec can be different from 0 only for these data objects.
• OUTPUT-LENGTH DESCRIBE FIELD

ABAP Addition

What does it do? For data objects with a fixed length, determines the output length of the data object dobj required for screen layouts. The return value has the type i. In an inline declaration, a variable of the type i is declared.

Generally, this result corresponds to the predefined output length of the data object in accordance with its data type in the output in the list buffer. In strings, olen is always set to 0. olen expects the data type i.

Latest notes:Normally, the required output length is specified adequately by the entry in the table for predefined output lengths. This is not the case when the data type of the data object is defined with a reference to ABAP Dictionary and an output length or a conversion routine is specified in the corresponding domain. When the output length defined in a dynpro of a dynpro field with a name identical to dobj is shorter than the required output length, an exception that cannot be handled is raised in the case of overflows. When passed to the list buffer, the outputs are truncated if the output length is shorter than the required output length. When separators or templates are provided in the user master record for the output of a data type, they are only displayed if the defined output length is sufficient. The required length can be longer than the output length determined by OUTPUT-LENGTH. The output length for strings can be determined using the functions strlen or xstrlen.



Example ABAP Coding
For date1, the output length 8 associated with
the type d is determined. For date2, the output length 10 defined in the domain SYDATS is determined. DATA: date1 TYPE d,
date2 TYPE sy-datum.

DESCRIBE FIELD date1 OUTPUT-LENGTH DATA(olen1).
DESCRIBE FIELD date2 OUTPUT-LENGTH DATA(olen2).
• HELP-ID DESCRIBE FIELD

ABAP Addition

What does it do? If the data type of the data object dobj is determined by a data element in ABAP Dictionary, the name of the data type is assigned that was used after the addition TYPE when defining the data object dobj. The return value is a string. In an inline declaration, a variable of the type string is declared.

If the data object does not refer to a data object in ABAP Dictionary, hlp is initialized. hlp expects a character-like data object.

If a field symbol is specified for dobj, a data object is assigned to this field symbol using the statement ASSIGN COMPONENT , and the data object refers to a component of a structure in ABAP Dictionary. The complete name of the structure component is returned.



Latest notes:The addition is called HELP-ID because the name of
the data type in hlp can be used for the display of the field help or input help assigned in ABAP Dictionary.



Example ABAP Coding
After DESCRIBE FIELD, hlp contains the
value 'SPFLI-CARRID'. Since an input help is assigned to this component in ABAP Dictionary, the input help can be displayed using the function module F4IF_FIELD_VALUE_REQUEST. If the name s_carr_id is specified after TYPE when defining carrid, hlp contains the value 'S_CARR_ID' and can be used, for example, to display the field help using the function module HELP_OBJECT_SHOW. DATA: carrid TYPE spfli-carrid,
struc TYPE dfies-tabname,
comp TYPE dfies-fieldname.

DESCRIBE FIELD carrid HELP-ID DATA(hlp).

SPLIT hlp AT '-' INTO struc comp.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = struc
fieldname = comp
EXCEPTIONS
field_not_found = 1
no_help_for_field = 2
inconsistent_help = 3
no_values_found = 4
OTHERS = 5.
• EDIT MASK DESCRIBE FIELD

ABAP Addition

What does it do? If a conversion routine is assigned to the data object dobj by referring to a domain in ABAP Dictionary, the name of the conversion routine is determined and prefixed with two equals signs '= ='. The return value is a string. In an inline declaration, a variable of the type string is declared. If no conversion routine is assigned to the data object, mask is initialized or remains initial.



Latest notes:If a data object mask meets these requirements, it
can be used directly in the addition USING EDIT MASK of the statement WRITE [TO] to call the conversion routine.



Example ABAP Coding
Since the data element
S_FLTIME is associated with the conversion routine SDURA by the domain S_DURA, msk contains the value '==SDURA' after DESCRIBE FIELD and the statement WRITE TO returns the value '5:33' after the conversion from seconds to minutes. DATA: time TYPE s_fltime,
seconds TYPE i,
output TYPE c LENGTH 10.

DESCRIBE FIELD time EDIT MASK DATA(msk).

seconds = 333.
WRITE seconds TO output USING EDIT MASK msk.
cl_demo_output=>display_data( output ).

Return to menu