Ansicht
Dokumentation
ABENUNICODE_LEAF_VIEW - UNICODE LEAF VIEW
General Material Data General Data in Customer MasterDiese Dokumentation steht unter dem Copyright der SAP AG.
Strukturlayout und Unicode-Fragmentsicht
Strukturlayout
Das Datenlayout einer Struktur richtet sich nach dem Datentyp seiner Komponenten und nach deren Ausrichtungsanforderungen.
Eine Ausrichtungsanforderung bedeutet, dass Felder eines bestimmten Typs im Speicher auf bestimmten Adressen beginnen müssen. In Unicode-Systemen sind dies alle numerischen Felder vom Typ I und F und alle zeichenartigen Felder. Um den Ausrichtungsanforderungen von Komponenten in Strukturen zu genügen, werden falls erforderlich leere Bytes als Ausrichtungslücken vor diesen Komponenten eingefügt.
Unicode-Fragmentsicht auf Strukturen
Die Konvertibilität von Strukturen in Unicode-Systemen beruht auf dem Strukturlayout. Das Strukturlayout wird hierfür in der so genannten Unicode-Fragmentsicht betrachtet.
Die Unicode-Fragmentsicht zerlegt eine Struktur wie folgt in Fragmente:
- Hintereinanderfolgende Komponenten vom Typ X, zwischen denen keine Ausrichtungslücken sind, bilden byteartige Fragmente.
- Hintereinanderfolgende Komponenten vom Typ C, N, D, T, zwischen denen keine Ausrichtungslücken sind, bilden zeichenartige Fragmente.
- Alle übrigen Komponenten, also Felder vom Typ I, F, P, string, xstring, Referenzen und interne Tabellen bilden jeweils eigene Fragmente.
Innerhalb eines Fragments der Unicode-Fragmentsicht gibt es also keine Ausrichtungslücken. Für die Konvertibilität von Strukturen wird in Unicode-Systemen die Anordnung der Fragmente in Operanden verglichen.
Beispiele
Konvertible Strukturen
DATA: BEGIN OF struc1,
a(1) TYPE x,
b(1) TYPE x,
c(6) TYPE c,
END OF struc1.
DATA: BEGIN OF struc2,
a(2) TYPE x,
b(2) TYPE c,
c(4) TYPE n,
END OF struc2.
Die Unicode-Fragmentsicht beider Strukturen ist:
X(2)
C(6)
struc1 kann struc2 in einem Unicode-Systemen zugewiesen werden.
Inkonvertible Strukturen
DATA: BEGIN OF struc1,
a TYPE d,
b TYPE t,
c TYPE f,
d(2) TYPE x,
e(4) TYPE x,
f(8) TYPE c,
END OF struc1.
DATA: BEGIN OF struc2,
a TYPE d,
b TYPE t,
BEGIN OF struc3,
c TYPE f,
d(2) TYPE x,
END OF struc3,
e(4) TYPE x,
f(8) TYPE c,
END OF struc2.
Die Unicode-Fragmentsicht der Strukturen ist:
struc1 struc2
C(14) C(14)
F(8) F(8)
X(6) X(2)
C(8) X(4)
C(8)
Wegen der Ausrichtung der Unterstruktur struc3 besteht in struc2 eine Ausrichtungslücke zwischen den Komponenten d und e, die in struc1 nicht auftritt.
General Material Data SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 5090 Date: 20240523 Time: 114356 sap01-206 ( 51 ms )