Ansicht
Dokumentation

ABENCONVERSION_FLAT-FLAT - CONVERSION FLAT-FLAT

ABENCONVERSION_FLAT-FLAT - CONVERSION FLAT-FLAT

Vendor Master (General Section)   rdisp/max_wprun_time - Maximum work process run time  
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. Falls es kürzer ist, 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 Fragmentsichten der beteiligten Strukturen bei Anzeige des Syntaxfehlers im ABAP Editor durch Auswahl der Drucktaste mit der Informationsikone anzeigen lassen.

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).

DATA:                        DATA:
  BEGIN OF struc1,             BEGIN OF struc2,
    a TYPE c LENGTH 1,           a TYPE c LENGTH 1,
    x TYPE x LENGTH 1,           b TYPE c LENGTH 1,
  END OF struc1.               END OF struc2.

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.

DATA:                        DATA:
  BEGIN OF struc3,             BEGIN OF struc4,
    a TYPE c LENGTH 2,           a TYPE c LENGTH 8,
    n TYPE n LENGTH 6,           i TYPE i,
    i TYPE i,                    d TYPE decfloat16,
  END OF struc3.               END OF struc4.

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.

DATA:                        DATA:
  BEGIN OF struc5,             BEGIN OF struc6,
    a TYPE x LENGTH 1,           a TYPE x LENGTH 1,
    b TYPE x LENGTH 1,           BEGIN OF struc0,
    c TYPE c LENGTH 1,             b TYPE x LENGTH 1,
  END OF struc5.                   c TYPE c LENGTH 1,
                                 END OF struc0,
                               END OF struc6.

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.

DATA:                        DATA:
  BEGIN OF struc7,             BEGIN OF struc8,
    a TYPE i,                    a TYPE i,
    p TYPE p LENGTH 8,           p TYPE p LENGTH 8,
    c TYPE c LENGTH 1,           c TYPE c LENGTH 5,
  END OF struc7.                 o TYPE p LENGTH 8,
                               END OF struc8.

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.

DATA:                        DATA:
  BEGIN OF struc9             BEGIN OF struc10,
    a TYPE p LENGTH 2            a TYPE p LENGTH 2
             DECIMALS 0,                  DECIMALS 3,
  END OF struc9.              END OF struc10.






ROGBILLS - Synchronize billing plans   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 10515 Date: 20240523 Time: 183216     sap01-206 ( 112 ms )