Anfang des Inhaltsbereichs

Dynamische Erzeugung von Datenobjekten  Dokument im Navigationsbaum lokalisieren

CREATE DATA vor Release 6.10

Mittels CREATE DATA ist es möglich, Felder eines vor- oder benutzerdefinierten Datentyps zu erzeugen. Folgende Varianten werden angeboten:

CREATE DATA dref TYPE  typ.
CREATE DATA dref TYPE (typname).
CREATE DATA dref LIKE  feld.
CREATE DATA dref TYPE LINE OF itab.
CREATE DATA dref LIKE LINE OF itab.

Im folgenden Beispiel wird wiederum ein bestimmtes Feld der Datenbanktabelle X031L gelesen, wobei Feld- und Tabellenname erst zur Laufzeit bekannt sind.

Beispiel

*  Lesen eines Feldes der Tabelle X031L

  PARAMETERS:
    TAB_NAME   LIKE SY-TNAME,           "Tabellenname
    TAB_COMP   LIKE X031L-FIELDNAME,   "Feldname
    ANZAHL     TYPE I DEFAULT 10.       "Zeilenanzahl

  FIELD-SYMBOLS: <WA>   TYPE ANY,
                 <COMP> TYPE ANY.

  DATA: WA_REF TYPE REF TO DATA.

  CREATE DATA WA_REF TYPE (TAB_NAME). "Passende Workarea
  ASSIGN WA_REF->* TO <WA>.

  SELECT * FROM (TAB_NAME) INTO <WA>
    UP TO anzahl ROWS.  
    ASSIGN COMPONENT TAB_COMP OF STRUCTURE <WA> TO <COMP>.
    WRITE: / TAB_COMP, <COMP>.
  ENDSELECT.

CREATE DATA für interne Tabellen

Mit einer weiteren Variante von CREATE DATA ist es möglich, zur Laufzeit Tabellenobjekte zu erzeugen. Zeilentyp und Schlüssel der Tabelle können dabei statisch oder dynamisch angegeben werden.

CREATE DATA dref (TYPE [STANDARD|SORTED|HASHED] TABLE
     OF (LineType | (Name) |REF TO DATA | REF TO Obj))
     | (LIKE [STANDARD|SORTED|HASHED] TABLE OF LineObj
      
[ WITH (UNIQUE|NON-UNIQUE)
        (KEY (k1 ... kn | ( keytab) | TABLE_LINE )| DEFAULT KEY )  ]
       [ INITIAL SIZE m ]

Für diese Anweisung gelten die nachfolgende Einschränkungen:

  1. m ist eine Variable oder eine Konstante ohne Vorzeichen, deren Inhalt zur Laufzeit vom Typ NUMLIKE sein muß.
  2. keytab ist eine nicht leere Tabelle des Typs CHARLIKE, deren Komponenten keine Offset/Längen- oder überlappende Key-Angaben enthalten dürfen. Der Zusatz TABLE_LINE ist erlaubt, wenn die Tabelle nur eine Zeile enthält.
  3. Ein Syntaxfehler erfolgt, wenn entweder die Typ- oder die Zeilen- und die Schlüsselangabe statisch sind.
  4. Ist kein Schlüssel definiert, dann zieht der DEFAULT-KEY.

CREATE DATA mit eingebauten generischen Typen

Bei CREATE DATA können auch die generischen Basistypen C, N, X und P verwendet werden. Durch Zusätze kann die Länge und bei Typ P auch die Zahl der Dezimalstellen spezifiziert werden.

CREATE DATA dref TYPE (t | (typeName))
[ LENGTH len ]
[ DECIMALS dec ].

Der Zusatz LENGTH ist nur bei den Typen C, N, X und P erlaubt und muß stets hinter dem Schlüsselwort TYPE stehen. Bei unsinniger Angabe von LENGTH oder DECIMALS wird ein abfangbarer Laufzeitfehler ausgelöst.