Fehlermeldung “Innerhalb von Strukturen sind keine generischen Typdefinitionen erlaubt”

Folgende Fehlermeldung erscheint eventuell bei Typdeklarationen:

Innerhalb von Strukturen sind keine generischen Typdefinitionen erlaubt.

Folgende Typdeklaration ruft diesen Fehler hervor:

TYPES: BEGIN OF ts_daten,
         vbeln  TYPE vbeln,
         auart  TYPE auart,
         t_vbap TYPE STANDARD TABLE OF vbap,
       END OF ts_daten.

Häh? und nun?

Die Aussage ist klar: Die Deklaration TYPE STANDARD TABLE OF ist anscheinend eine generische Datendeklaration. Aber wie macht man daraus eine spezielle??

In der Dokumentation ist der folgende Satz zu finden:

Ein mit TYPES – TABLE OF oder im ABAP Dictionary definierter Tabellentyp ist generisch, wenn der primäre Tabellenschlüssel nicht oder unvollständig angegeben ist oder wenn der Tabellentyp generisch bezüglich sekundären Tabellenschlüssel ist.

Lösung

Das bedeutet, dass der Schlüssel für die Tabelle durch den Zusatz WITH { DEFAULT | NON-UNIQUE | UNIQUE } KEY spezifiziert werden muss:

t_vbap TYPE STANDARD TABLE OF vbap WITH DEFAULT KEY,

Übrigens

Die Fehlermeldung erscheint nur bei der Typdefinition. Eine Datendeklaration kann exakt so, wie oben beschrieben, vorgenommen werden:

DATA: BEGIN OF ls_daten,
         vbeln TYPE vbeln,
         auart TYPE auart,
         t_vbap TYPE STANDARD TABLE OF vbap,
      END OF ls_daten.
Enno Wulff

Leave a Comment