Ansicht
Dokumentation

ABENCONVERSION_FLAT_FLAT - CONVERSION FLAT FLAT

ABENCONVERSION_FLAT_FLAT - CONVERSION FLAT FLAT

Vendor Master (General Section)   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Konvertierung zwischen flachen Strukturen

Für die Konvertierung flacher Strukturen muss die Fragmentsicht der beteiligten Strukturen beachtet werden. Es gelten folgende Regeln für die Konvertierung einer flachen Struktur in eine andere flache Struktur:

  • Bei Zuweisungen von Strukturen mit gleicher Fragmentsicht wird die Struktur unkonvertiert zugewiesen.

  • Bei Zuweisungen von Strukturen unterschiedlicher Länge, deren Fragmentsicht über die Länge der kürzeren Struktur exakt übereinstimmt, erfolgt eine unkonvertierte Zuweisung in der Länge der kürzeren Struktur.
  • Wenn die Zielstruktur länger als die Quellstruktur ist, werden die Komponenten der Zielstruktur, die hinter den gemeinsamen Fragmenten liegen, mit den typabhängigen Initialwerten gefüllt und Ausrichtungslücken auf hexadezimal 0 gesetzt.

  • Wenn die Zielstruktur kürzer als die Quellstruktur ist, werden die Komponenten der Quellstruktur, die hinter den gemeinsamen Fragmenten liegen, abgeschnitten.

  • Bei Zuweisungen von Strukturen unterschiedlicher Länge, deren Fragmentsicht bis zum vorletzten Fragment der kürzeren Struktur übereinstimmt und bei denen das nächste Fragment jeweils zeichen- oder byteartig ist, erfolgt eine unkonvertierte Zuweisung des fragmentgleichen Anfangsstücks. Die Zeichen des nächsten Fragments der Quellstruktur werden linksbündig und unkonvertiert dem entsprechenden Fragment der Zielstruktur zugewiesen. Falls dieses Fragment in der Zielstruktur größer als in der Quellstruktur ist, wird je nach Datentyp rechts mit Leerzeichen oder mit hexadezimal 0 aufgefüllt. Ist es zu kurz, wird rechts abgeschnitten. Die restlichen Komponenten hinter diesem Fragment werden entweder abgeschnitten oder mit den typabhängigen Initialwerten gefüllt.

Für alle anderen Fälle ist keine Konvertierungsregel definiert und daher keine Zuweisung möglich.

Hinweise

  • Wenn in den beteiligten Strukturen Komponenten vom Datentyp p vorkommen, bilden diese einzelne Fragmente, bei denen nur die Längen, aber nicht die Anzahl der Nachkommastellen signifikant sind. Bei der Zuweisung solcher Strukturen wird der Wert der Quellkomponenten vom Typ p auf die Anzahl der Nachkommastellen der Zielkomponenten gecastet und es kann zu einer Verschiebung des Dezimalpunkts kommen. Das Ergebnis für eine solche Komponente kann also unterschiedlich zum Ergebnis einer direkten Zuweisung zwischen den Komponenten sein.
  • Wenn eine Komponente einer flachen Struktur einen Aufzählungstyp hat, ist diese unabhängig von dessen Basistyp ein eigenes Fragment der Fragmentsicht und muss bei Zuweisungen zwischen solchen Strukturen in Quell- und Zielstruktur an der gleichen Stelle mit gleichem Typ vorhanden sein.
  • Falls ein Syntaxfehler wegen einer unerlaubten Zuweisung zwischen flachen Strukturen auftritt, kann man sich die Fragmentsicht der beteiligten Struktur bei Anzeige des Syntaxfehlers im ABAP Editor durch Auswahl der Drucktaste mit der Informationsikone anzeigen lassen.
  • Da nur die Unicode-Systeme unterstützt werden, in denen ein Zeichen immer durch 2 Bytes dargestellt wird, sind die Konvertierungsregeln für flache Strukturen weniger streng als in Systemen, in denen nicht-Unicode-System noch unterstützt werden. Dort müssen alle möglichen Ausrichtungsanforderungen berücksichtigt werden, unabhängig von der tatsächlichen Länge eines Zeichens in seiner Zeichendarstellung. Beim Portieren eines Programmes von höheren auf niedrigeren Releases kann es wegen der in den niedrigeren Releases geltenden strengeren Regeln zu Syntaxfehlern kommen.

Beispiele

Eine Zuweisung von struc1 an struc2 und umgekehrt ist nicht erlaubt, weil die Fragmentsicht nicht übereinstimmt (struc1-x belegt im Gegensatz zu struc2-b immer nur ein Byte).

Eine Zuweisung von struc3 an struc4 und umgekehrt ist zulässig weil die Fragmentsicht der kürzeren Struktur struc3 mit der Fragmentsicht des Anfangsstücks der längeren Struktur struc4 übereinstimmt.

Eine Zuweisung von struc5 an struc6 und umgekehrt ist wiederum verboten, weil die Fragmentsichten der beiden Strukturen durch die Ausrichtungslücken vor struc5-b und vor struc6-struc0-b nicht übereinstimmen.

Eine Zuweisung von struc7 an struc8 und umgekehrt ist möglich, weil die Fragmentsicht bis zum vorletzten Fragment p der kürzeren Struktur struc7 übereinstimmt.

Eine Zuweisung von struc9 an struc10 und umgekehrt ist möglich, weil die Fragmentsicht trotz unterschiedlicher Nachkommastellen beim Typ p übereinstimmt. Wenn struc9-a den Wert 999 hat, hat struc10-a nach einer Zuweisung von struc9 an struc10 den Wert 0,999. Eine direkte Zuweisung von struc9-a an struc10-a führt dagegen zu einer Ausnahme der Klasse CX_SY_CONVERSION_OVERFLOW.

Die folgende Zuweisung zwischen zwei flachen Strukturen ist im aktuellen Release möglich, war aber während der Unterstützung von nicht Unicode-Systemen noch nicht möglich. In der eingebundenen Unterstruktur incl1 hat die Zeichenkomponente die gleiche Ausrichtung wie die ganzzählige Komponente und eine Ausrichtungslücke besteht nicht. Als nicht-Unicode-Systemen noch unterstützt wurden, musste aber eine Ausrichtungslücke hinter der eingebundenen Struktur angenommen werden, damit das Programm sowohl in Unicode-Systemen als auch in nicht-Unicode-Systemen ausführbar war.






Vendor Master (General Section)   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6973 Date: 20240523 Time: 172000     sap01-206 ( 135 ms )