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].
Zusätze:
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
Wirkung
Diese Anweisung ermittelt einige Eigenschaften des Datenobjekts dobj und weist sie den angegebenen Zielfeldern zu. Als Zielfelder jedes Zusatzes können angegeben werden:
Die verschiedenen Zusätze erlauben es, den Datentyp und die Anzahl der Komponenten bei Strukturen, die im Speicher belegte Länge, die Anzahl der Nachkommastellen, die Ausgabelänge, die Bezeichnung des Datentyps bei einem Bezug auf ein Datenelement des ABAP Dictionarys und eine eventuelle Konvertierungsroutine zu bestimmen.
Hinweise
... TYPE typ [COMPONENTS com]
Wirkung
Der Datentyp des Datenobjekts dobj wird bestimmt. Der Rückgabewert ist eine einstellige zeichenartige Kennung. Bei einer Inline-Deklaration wird eine Variable vom Typ c der Länge 1 deklariert. Die folgenden Tabellen zeigen die Zuordnung der Rückgabewerte zu allen möglichen Datentypen, wobei die Groß-/Kleinschreibung der Kennung relevant ist.
| Numerischer Datentyp | Kennung |
| b | b |
| s | s |
| i | I |
| int8 | 8 |
| p | P |
| decfloat16 | a |
| decfloat34 | e |
| f | F |
| Zeichenartiger Datentyp | Kennung |
| c | C (Ausnahme, siehe Hinweis unten) |
| n | N |
| string | g |
| Byteartiger Datentyp | Kennung |
| x | X |
| xstring | y |
| Datums-/Zeittyp | Kennung |
| d | D |
| t | T |
| Referenztyp | Kennung |
| Datenreferenz | l |
| Objektreferenz | r |
| Komplexer Typ | Kennung |
| flache Struktur | u (Ausnahme, siehe Hinweis unten) |
| tiefe Struktur | v (Ausnahme, siehe Hinweis unten) |
| interne Tabelle | h |
Der Zusatz COMPONENTS bestimmt die Anzahl der direkten Komponenten des Datenobjekts dobj. Der Rückgabewert ist vom Typ i. Bei einer Inline-Deklaration wird eine Variable vom Typ i deklariert. Wenn das Datenobjekt dobj keine Struktur ist, wird der Wert 0 zurückgegeben. Wenn dobj eine geschachtelte Struktur ist, werden nur die Komponenten der höchsten Hierarchiestufe gezählt.
Hinweis
Wenn DESCRIBE FIELD auf eine statische Box angewendet wird, wird ihr Datentyp gemäß obiger Tabelle und nicht die interne Kennung j für die Boxed Component zurück gegeben.
Beispiel
Für die tiefe geschachtelte Struktur struc1 werden die Typkennung "v" und drei Komponenten, für die flache Struktur struc2 werden die Typkennung "u" und zwei Komponenten festgestellt.
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 ilen IN {BYTE|CHARACTER} MODE
Wirkung
Die vom Datenobjekt dobj im Speicher direkt belegte Länge wird je nach MODE-Zusatz in Bytes oder in Zeichen bestimmt. Der Rückgabewert ist vom Typ i. Bei einerInline-Deklaration wird eine Variable vom Typ i deklariert.
Die Variante mit dem Zusatz IN BYTE MODE stellt die Länge des Datenobjekts dobj in Bytes fest. Die Variante mit dem Zusatz IN CHARACTER MODE stellt die Länge des Datenobjekts dobj in Zeichen fest. Bei Verwendung von IN CHARACTER MODE muss der Datentyp von dobj flach und zeichenartig sein. Bei tiefen Datentypen kann nur IN BYTE MODE angegeben werden und es wird immer die Länge der beteiligten Referenzen (pro Referenz 8 Byte) festgestellt.
Hinweise
Beispiel
Berechnung, wieviele Bytes zur Darstellung eines Zeichens benötigt werden. In Multi-Byte-Systemen ist das Ergebnis größer als 1.
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.
Beispiel
Das Ergebnis len der folgenden DESCRIBE-Anweisung ist wegen einer schließenden Ausrichtungslücke in struct nicht 9 sondern 10.
DATA:
BEGIN OF struct,
text TYPE c LENGTH 3,
hex TYPE x LENGTH 3,
END OF struct.
DESCRIBE FIELD struct LENGTH DATA(len) IN BYTE MODE.
... DECIMALS dec
Wirkung
Die Anzahl der Nachkommastellen des Datenobjekts dobj wird bestimmt. Der Rückgabewert ist vom Typ i. Beieiner Inline-Deklaration wird eine Variable vom Typ i deklariert.
Hinweis
Da nur Datenobjekte vom Datentyp p Nachkommastellen haben können, kann nur bei diesen ein von 0 verschiedenes Ergebnis in dec auftreten.
... OUTPUT-LENGTH olen
Wirkung
Bei Datenobjekten fester Länge wird die auf Bildschirmbildern benötigte Ausgabelänge des Datenobjekts dobj bestimmt. Der Rückgabewert ist vom Typ i. Bei einer Inline-Deklaration wird eine Variable vom Typ i deklariert.
Das Ergebnis entspricht in der Regel der vordefinierten Ausgabelänge, die das Datenobjekt gemäß seinem Datentyp bei einer Ausgabe in den Listenpuffer hat . Bei Strings wird olen immer auf den Wert 0 gesetzt. Für olen wird der Datentyp i erwartet.
Hinweise
Beispiel
Für date1 wird die zum Typ d gehörige Ausgabelänge 8, für date2 die in der Domäne SYDATS definierte Ausgabelänge 10 festgestellt.
DATA: date1 TYPE d,
date2 TYPE sy-datum.
DESCRIBE FIELD date1 OUTPUT-LENGTH DATA(olen1).
DESCRIBE FIELD date2 OUTPUT-LENGTH DATA(olen2).
... HELP-ID hlp
Wirkung
Wenn der Datentyp des Datenobjekts dobj durch ein Datenelement des ABAP Dictionarys bestimmt wird, wird die Bezeichnung des Datentyps zugewiesen, die bei der Definition des Datenobjekts dobj hinter dem Zusatz TYPE verwendet wurde. Der Rückgabewert ist eine Zeichenkette. Bei einer Inline-Deklaration wird eine Variable vom Typ string deklariert.
Wenn sich das Datenobjekt nicht auf ein Datenelement des ABAP Dictionarys bezieht, wird hlp initialisiert. Für hlp wird ein zeichenartiges Datenobjekt erwartet.
Wenn für dobj ein Feldsymbol angegeben ist, dem mit der Anweisung ASSIGN COMPONENT ein Datenobjekt zugewiesen wurde, das sich auf eine Komponente einer Struktur im ABAP Dictionary bezieht, wirddie vollständige Bezeichnung der Strukturkomponente zurückgegeben.
Hinweis
Der Zusatz heißt HELP-ID, da der Name des Datentyps in hlp für die Anzeige der im ABAP Dictionary zugeordneten Feld- oder Eingabehilfe verwendet werden kann.
Beispiel
Nach DESCRIBE FIELD enthält hlp den Wert "SPFLI-CARRID". Da dieser Komponente im ABAP Dictionary eine Eingabehilfe zugeordnet ist, kann diese über den Funktionsbaustein F4IF_FIELD_VALUE_REQUEST angezeigt werden. Wenn bei der Definition von carrid hinter TYPE die Bezeichnung s_carr_id angegeben wird, würde hlp den Wert "S_CARR_ID" enthalten und könnte beispielsweise verwendet werden, um mit dem Funktionsbaustein HELP_OBJECT_SHOW die Feldhilfe anzuzeigen.
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 mask
Wirkung
Wenn dem Datenobjekt dobj durch Bezug auf eine Domäne im ABAP Dictionary eine Konvertierungsroutine zugeordnet ist, wird der Name der Konvertierungsroutine bestimmt und diesem werden zwei Gleichheitszeichen "==" vorangestellt. Der Rückgabewert ist eine Zeichenkette. Bei einer Inline-Deklaration wird eine Variable vom Typ string deklariert. Wenn dem Datenobjekt keine Konvertierungsroutine zugeordnet ist, wird mask initialisiert bzw. bleibt initial.
Hinweis
Ein solcherart versorgtes Datenobjekt mask kann direkt im Zusatz USING EDIT MASK der Anweisung WRITE [TO] zum Aufruf der Konvertierungsroutine verwendet werden.
Beispiel
Da das Datenelement S_FLTIME im ABAP Dictionary über die Domäne S_DURA mit der Konvertierungsroutine SDURA verknüpft ist, enthält msk nach DESCRIBE FIELD den Wert"==SDURA" und die WRITE TO-Anweisung gibt den von Sekunden in Minuten umgerechneten Wert "5:33" aus.
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 ).