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