ABAPDESCRIBE_FIELD - DESCRIBE FIELD

PERFORM Short Reference   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

DESCRIBE FIELD

Kurzreferenz



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 angegebenenVariablen zu. Die verschiedenen Zusätze erlauben es, den Datentyp und die Anzahl der Komponenten bei Strukturen, die im Speicher belegte Länge, die Anzahl derNachkommastellen,die Ausgabelänge, die Bezeichnung des Datentyps bei einem Bezug auf ein Datenelement des ABAP Dictionarys und eine eventuelle Konvertierungsroutine zu bestimmen.

Hinweise

  • Für dobj können insbesondere auch Feldsymbole oder Formalparameter inProzedurenangegeben werden, wodurch die Eigenschaften des Datenobjekts festgestellt werden, die diese zum Zeitpunkt der Ausführung der Anweisung repräsentieren.
  • Die Anweisung DESCRIBE ist im Wesentlichen für die Bestimmung der Eigenschaften von Datenobjekten elementarer Datentypen geeignet. Wenn DESCRIBE auf Strukturen oder DatenobjektetieferDatentypen wie Strings, interne Tabellen oder Referenzvariablen angewendet wird, können nur elementareEigenschaften festgestellt werden. Weitergehende Informationen, wie z.B. der statische oder dynamischeTyp einer Referenzvariablen sind mit DESCRIBE nicht feststellbar. Für solche Informationen sind die Typklassen der Run Time Type Services(RTTS)zu verwenden, mit denen alle Eigenschaften von Datenobjekten aller Datentypen bestimmt werden können.


Zusatz 1

... TYPE typ [COMPONENTS com]

Wirkung

Der Datentyp des Datenobjekts dobj wird bestimmt und eine entsprechende einstellige Kennung demDatenobjekt typ zugewiesen, für das ein zeichenartiger Datentyp erwartet wird. Die folgendeTabelle zeigt die Zuordnung der Rückgabewerte zu allen möglichen Datentypen, wobei die Groß-/Kleinschreibung der Kennung relevant ist.

KennungDatentyp
aElementartyp decfloat16
binterner Elementartyp b
CElementartyp c (Ausnahme, siehe Hinweis unten)
DElementartyp d
eElementartyp decfloat34
FElementartyp f
gElementartyp string
hinterne Tabelle
IElementartyp i
lDatenreferenz
NElementartyp n
PElementartyp p
rObjektreferenz
sinterner Elementartyp s
TElementartyp t
uflache Struktur (Ausnahme, siehe Hinweis unten)
vtiefe Struktur (Ausnahme, siehe Hinweis unten)
XElementartyp x
yElementartyp xstring

Der Zusatz COMPONENTS weist dem Datenobjekt com die Anzahl der direkten Komponenten desDatenobjekts dobj zu. Für com wird der Datentyp i erwartet. Wenn das Datenobjektdobj 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.

Hinweise

  • Wenn der Zusatz COMPONENTS nicht verwendet wird, liefert der Zusatz TYPE inNicht-Unicode-Programmen für beliebige Strukturen den Wert "C" statt "u" oder "v".

  • Wenn DESCRIBE FIELD direkt auf eine statische Box angewendet wird, wird ihr Datentyp gemäß obiger Tabelle und nicht dieinterne 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 dieflache 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,
      typ1  TYPE c LENGTH 1,
      comp1 TYPE i,
      typ2  TYPE c LENGTH 1,
      comp2 TYPE i.

DESCRIBE FIELD: struc1        TYPE typ1 COMPONENTS comp1,
                struc1-struc2 TYPE typ2 COMPONENTS comp2.

Zusatz 2

... LENGTH ilen IN {BYTE|CHARACTER} MODE

Wirkung

Die vom Datenobjekt dobj im Speicher direkt belegte Länge wird je nach MODE-Zusatzin Bytes oder in Zeichen bestimmt und dem Datenobjekt ilen zugewiesen. Für ilen wird der Datentyp i erwartet.

In Unicode-Programmenmuss der MODE-Zusatz angegeben werden. Die Variante mit dem Zusatz IN BYTE MODE stelltdie Länge des Datenobjekts dobj in Bytes fest. Die Variante mit dem Zusatz IN CHARACTERMODE 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. BeitiefenDatentypen kann nur IN BYTE MODE angegeben werden und es wird immer die Länge der Referenz (8 Byte) festgestellt.

In Nicht-Unicode-Programmenkann LENGTH ohne den MODE-Zusatz verwendet werden. In diesem Fall wird implizit der Zusatz IN BYTE MODE verwendet.

Hinweis

Bei Datenobjekten fester Länge wird die bei der Erzeugung des Datenobjekts festgelegte Längefestgestellt. Um die belegte Länge von zeichenartigen Datenobjekten ohne Berücksichtigung schließender Leerzeichen festzustellen, kann dieeingebaute Funktion strlen verwendet werden.

Beispiel

Berechnung, wie viel 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,
      blen  TYPE i,
      clen  TYPE i,
      bytes TYPE i.

DESCRIBE FIELD text: LENGTH blen IN BYTE MODE,
                    LENGTH clen IN CHARACTER MODE.

bytes = blen / clen.

Zusatz 3

... DECIMALS dec

Wirkung

Die Anzahl der Nachkommastellen des Datenobjekts dobj wird bestimmt und dem Datenobjekt dec zugewiesen. Für dec wird der Datentyp i erwartet.

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 aufBildschirmbildernbenötigte Ausgabelänge des Datenobjekts dobj bestimmt und dem Datenobjekt olenzugewiesen. Das Ergebnis entspricht 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

  • In der Regel ist die benötigte Ausgabelänge durch die Angabe in der Tabelle für vordefinierteAusgabelängenbestimmt, außer wenn der Datentyp des Datenobjekts mit Bezug auf das ABAP Dictionary definiert ist und bei der entsprechenden Domäne eine Ausgabelänge oder eine Konvertierungsroutine festgelegt ist.
  • Wenn die in einem Dynpro definierte Ausgabelänge eines zu dobj gleichnamigenDynpro-Feldskleiner als die benötigte Ausgabelänge ist, kommt es bei einem Überlauf zu einerunbehandelbaren Ausnahme. Bei der Übergabe an den Listenpuffer werden Ausgaben gekürzt, wenn die Ausgabelänge kürzer als die benötigte Ausgabelänge ist.
  • Wenn für die Ausgabe eines Datentyps Trennzeichen oder Masken im Benutzerstammsatz vorgesehensind, werden diese nur angezeigt, falls die vorgesehene Ausgabelänge ausreichend ist. Die benötigteLänge kann größer als die mit OUTPUT-LENGTH festgestellte Ausgabelänge sein.
  • Für Strings kann die Ausgabelänge mit den Funktionen strlen bzw. xstrlen ermittelt werden.


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,
      olen1 TYPE i,
      olen2 TYPE i.

DESCRIBE FIELD: date1 OUTPUT-LENGTH olen1,
                date2 OUTPUT-LENGTH olen2.

Zusatz 5

... HELP-ID hlp

Wirkung

Wenn der Datentyp des Datenobjekts dobj durch ein Datenelement des ABAP Dictionarys bestimmtwird, wird dem Feld hlp die Bezeichnung des Datentyps zugewiesen, die bei der Definition desDatenobjekts dobj hinter dem Zusatz TYPE verwendet wurde. Wenn sich das Datenobjekt nichtauf 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 COMPONENTein Datenobjekt zugewiesen wurde, das sich auf eine Komponente einer Struktur im ABAP Dictionary bezieht, wird die 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 imABAP Dictionary eine Eingabehilfe zugeordnet ist, kann diese über den Funktionsbaustein F4IF_FIELD_VALUE_REQUESTangezeigt werden. Wenn bei der Definition von carrid hinter TYPE die Bezeichnung s_carr_idangegeben wird, würde hlp den Wert "S_CARR_ID" enthalten und könnte beispielsweise verwendet werden, um mit dem FunktionsbausteinHELP_OBJECT_SHOW die Feldhilfe anzuzeigen.

DATA: carrid TYPE spfli-carrid,
      hlp    TYPE string,
      struc  TYPE dfies-tabname,
      comp   TYPE dfies-fieldname.

DESCRIBE FIELD carrid HELP-ID 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 Konvertierungsroutinezugeordnet ist, werden dem Namen der Konvertierungsroutine zwei Gleichheitszeichen "==" vorangestelltund das Ergebnis wird dem Datenobjekt mask zugewiesen. Wenn dem Datenobjekt keine Konvertierungsroutinezugeordnet ist, wird mask initialisiert. Für mask wird ein zeichenartiges Datenobjekt erwartet.

Hinweis

Ein solcherart versorgtes Datenobjekt mask kann direkt im Zusatz USING EDIT MASK der Anweisung WRITE 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ältmsk nach DESCRIBE FIELD den Wert"==SDURA" und die WRITE-Anweisung gibt den von Sekunden in Minuten umgerechneten Wert "5:33" aus.

DATA: time    TYPE s_fltime,
      seconds TYPE i,
      msk     TYPE string.

DESCRIBE FIELD time EDIT MASK msk.

seconds = 333.
WRITE seconds USING EDIT MASK msk.


General Data in Customer Master   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.


Length: 20808 Date: 20120526 Time: 195209     triton ( 401 ms )