DESCRIBE FIELD

%ABAP_SHORT_REF%

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

Zusatz 1

... 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 DatentypKennung
bb
ss
iI
int88
pP
decfloat16a
decfloat34e
fF

Zeichenartiger DatentypKennung
cC (Ausnahme, siehe Hinweis unten)
nN
stringg

Byteartiger DatentypKennung
xX
xstringy

Datums-/ZeittypKennung
dD
tT

ReferenztypKennung
Datenreferenzl
Objektreferenzr

Komplexer TypKennung
flache Strukturu (Ausnahme, siehe Hinweis unten)
tiefe Strukturv (Ausnahme, siehe Hinweis unten)
interne Tabelleh

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).

Zusatz 2

... 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.

Zusatz 3

... 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.

Zusatz 4

... 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).

Zusatz 5

... 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.

Zusatz 6

... 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 ).