a-dead-trousers hat geschrieben:Das erklärt zumindest den Unterschied zwischen DB und DDIC aber der Unterschied zwischen zwei Strukturen mit denselben Feldern eher nicht.
Doch, auch das wird damit erklärt.
Denn wenn eine Struktur als erste Komponente ein Feld vom Typ X mit Länge 1 hat (oder in Nicht-Unicode-Systemen ein Feld vom Typ C mit Länge 1), danach ein Feld vom Typ I, dann wird es dazwischen eine Alignment-Lücke von 3 Bytes geben (mal angenommen, die Architektur verlangt 4-Byte-Alignment für Integers).
Wenn nun diese Include-Struktur in eine andere Struktur eingebunden wird, dürfte auch die Struktur selbst an 4-Byte-Grenzen ausgerichtet werden, d.h., je nach Länge der vorherigen Komponenten incl. Alignment-Lücken gibt es unmittelbar vor der Struktur auch eine Alignment-Lücke. (Das kann man mit einem Mini-ABAP-Report und dem Befehle DESCRIBE DISTANCE ... leicht prüfen.)
Wenn statt des Includes nun aber Einzelfelder in die Struktur aufgenommen werden, wird das erste Feld vom Typ X ohne Alignment-Lücke direkt an das vorherige Feld geklebt. Dann hätte man also eine Abweichung der Gesamtlänge, die durch ein Alignment vor dem Feld mit Typ X verursacht wird, falls nicht die Einzelfelder eingebunden werden, sondern die komplette Struktur.
Auch zwischen diesem Feld vom Typ X und dem nachfolgenden vom Typ I muss beim Einbinden von Einzelfeldern die Alignment-Lücke nicht unbedingt 3 Bytes sein. Sie kann auch kleiner sein oder ganz entfallen, je nachdem, welche Gesamtlänge in Bytes erreicht ist, bevor das Feld vom Typ I kommt.
Frank