
Um auf eine Komponente einer Struktur zuzugreifen, müssen Sie ein Minuszeichen (-) zwischen den Strukturnamen und den Komponentennamen setzen.
Notiz
Wenn Sie auf diese Weise auf eine Strukturkomponente zugreifen, kann sie an jeder Operandenposition verwendet werden, an der eine Variable des gleichen Typs verwendet werden kann. Die Komponente airport_from_id der Struktur connection im obigen Beispiel hat den Typ /DMO/AIRPORT_FROM_ID. Folglich können Sie diese Komponente an jeder Operandenposition verwenden, an der Sie eine einfache Variable des Typs /DMO/AIRPORT_FROM_ID verwenden können; und zwar nicht nur auf der linken Seite einer Wertzuweisung wie im Beispiel, sondern auch auf der rechten Seite, in der Parameterübergabe eines Methodenaufrufs, in der INTO- oder WHERE-Klausel einer SELECT-Anweisung usw.

Wenn die Komponente einer Struktur selbst eine Struktur ist, greifen Sie durch erneute Verwendung des Komponentenselektors nach dem Namen der Hauptkomponente auf die Unterkomponenten zu. Die erste Wertzuweisung im Beispiel greift auf die Komponente MSGTY von MESSAGE zu, die selbst eine Komponente der geschachtelten Struktur CONNECTION_NESTED ist.
Hinweis

Mit dem Ausdruck VALUE #( ) können einem strukturierten Datenobjekt auf elegante Art Werte zugewiesen werden.
Wenn Sie eine gesamte Struktur füllen möchten, können Sie jede Komponente wie im vorherigen Beispiel einzeln adressieren.
Sie können aber auch einen Ausdruck VALUE #( ) zum Füllen der Struktur verwenden. Der Ausdruck konstruiert eine Struktur, füllt sie mit Werten und weist die gefüllte Struktur einer Variablen zu, in diesem Fall connection. Das Rautenzeichen (#) weist die ABAP-Laufzeitumgebung an, eine Struktur mit demselben Typ wie die Zielvariable connection zu konstruieren. In den Klammern führen Sie die Komponenten der Struktur auf, die gefüllt werden sollen (es müssen nicht alle sein), und weisen ihnen einen Wert zu.
Wenn Sie eine Struktur auf diese Weise füllen, löscht das Laufzeitsystem alle vorhandenen Werte aus der Struktur, bevor sie wieder mit den Werten aus Ihrem Ausdruck gefüllt wird.
Notiz

In ABAP dürfen Sie den Inhalt einer Struktur nur dann direkt in eine andere Struktur mit der Notation <target structure> = <source structure> kopieren, wenn die beiden Strukturtypen kompatibel sind. Dies ist in der Regel nur dann der Fall, wenn beide Strukturen vom selben Typ sind. Wenn die Strukturen unterschiedliche Typen haben, können zwei Fälle eintreten:
- Wenn eine der Strukturen eine nicht-zeichenartige Komponente an einer Stelle hat, an der die andere Struktur eine zeichenartige Komponente aufweist, führt die direkte Zuweisung zu einem Syntaxfehler.
- Wenn beide Strukturen zeichenartig sind, d.h. beide Strukturen nur aus zeichenartigen Komponenten bestehen, ist eine direkte Zuweisung technisch möglich. In der Regel kommt es jedoch zu einem falschen Ergebnis.
Im Beispiel sind Quellstruktur und Zielstruktur zeichenartig. Daher ist eine direkte Zuordnung technisch möglich. Da sie jedoch nicht kompatibel sind, ist das Ergebnis falsch: Der Inhalt der Komponente carrier_name wird in die Komponente message in der Zielstruktur kopiert.
Da sich kein Syntaxfehler ergibt, müssen Sie besonders vorsichtig sein, wenn Sie mit nicht kompatiblen zeichenartigen Strukturen arbeiten.
Wenn Sie Daten zwischen Strukturen kopieren, möchten Sie in der Regel Informationen aus einem Feld in das entsprechende Feld der Zielstruktur kopieren - airport_from_id nach airport_from_id, airport_to_id nach airport_to_id usw. Um dies in ABAP zu erreichen, verwenden Sie den Ausdruck CORRESPONDING. Dadurch werden Werte aus <source_structure> den entsprechenden, d.h. namensgleichen Komponenten von <target_structure> zugeordnet. Sie müssen die folgenden Punkte beachten:
- Die Felder müssen identische Namen haben.
- Die Komponenten müssen sich nicht in beiden Strukturen in der gleichen Position oder Reihenfolge befinden.
- Wenn die Felder unterschiedliche Typen aufweisen, versucht ABAP eine Typkonvertierung entsprechend dem vordefinierten Satz von Regeln.
Der CORRESPONDING -Ausdruck im Beispiel legt eine Struktur vom Typ st_connection_nested an. Der Struktur werden dann die Werte von gleichnamigen Komponenten aus der Struktur connection zugewiesen. Alle anderen Komponenten bleiben initial. Die so aufgebaute Struktur wird dann der connection_nested Struktur zugeordnet. Dadurch werden der Komponente message Initialwerte eingeschränkt zugeordnet.







