Ansicht
Dokumentation

ABENCASTING_GUIDL - CASTING GUIDL

ABENCASTING_GUIDL - CASTING GUIDL

TXBHW - Original Tax Base Amount in Local Currency   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Casting

Unter Casting verstehen wir die Behandlung eines Datenobjektes unter Annahme eines bestimmten Datentyps. Dies unterscheidet sich von der Bedeutung des Begriffs in anderen Programmiersprachen - wie zum Beispiel Java -, wo unter Casting eher das verstanden wird, was wir in ABAP als Konvertierung bezeichnen. Casting geschieht in ABAP entweder explizit oder implizit:

  • Explizites Casting über einen Zusatz CASTING ist möglich bei der Anweisung ASSIGN und bei Verwendung des Zusatzes ASSIGNING in Anweisungen zur Bearbeitung interner Tabellen. Bei Zuweisungen zwischen Referenzvariablen gibt es den Upcast und den Downcast. Außerdem gibt es ein obsoletes explizites Casting über den Zusatz STRUCTURE bei Formalparametern und Feldsymbolen.
  • Ein implizites Casting findet bei bestimmten Zuweisungen oder bei der Behandlung von Operanden an bestimmten Operandenpositionen statt. Prominentes Beispiel ist die Behandlung flacher Strukturen mit rein zeichenartigen Komponenten als ein einziges Feld vom Typ c.

Implizites Casting vermeiden

Vermeiden sie implizites Casting. Falls ein Casting auf einen anderen Datentyp erforderlich ist, kann es in der Regel durch ASSIGN ... CASTING explizit erreicht werden.

Implizites Casting tritt potenziell bei folgenden Verwendungen von Strukturen auf:

  • Zuweisungen zwischen inkompatiblen Strukturen oder Strukturen und elementaren Datenobjekten
  • Vergleiche zwischen Strukturen und elementaren Datenobjekten
  • Verwendung von Strukturen an Operandenpositionen, an denen elementare Datenobjekte erwartet werden
  • Lesen von der Datenbank mittels SELECT * ... INTO wa
  • Verwendung des Zusatzes INCREMENT zur Anweisung ASSIGN

Die Verwendung von implizitem Casting ist fehleranfällig und führt zu schwer nachvollziehbarem Quelltext. Durch den CASTING-Zusatz beim Umgang mit Feldsymbolen kann explizites Casting erreicht werden, was leichter nachvollziehbar ist. In der Tat ist die Möglichkeit des expliziten Castings ein wichtiger Beweggrund zur Verwendung von Feldsymbolen.

Folgender Quelltext zeigt die Zuweisung eines Textstrings an eine Struktur mit rein zeichenartigen Komponenten. Bei der Zuweisung findet ein nach obiger Regel unerwünschtes implizites Casting statt und die gesamte Struktur wird wie ein Textfeld vom Typ c der Länge 6 behandelt.

TYPES: BEGIN OF structure,
         comp1 TYPE c LENGTH 2,
         comp2 TYPE c LENGTH 4,
       END OF structure.
DATA structure TYPE structure.
DATA text TYPE string.
...
text        = ...
structure = text.

Folgender Quelltext verbessert obiges Beispiel dahin gehend, dass die Struktur einem Feldsymbol vom Typ c zugewiesen wird, wobei ein explizites Casting stattfindet. Die Behandlung der Struktur als zeichenartiges Feld erfolgt ausschließlich über das zeichenartige Feldsymbol.

...
FIELD-SYMBOLS text> TYPE c.
...
ASSIGN structure TO text> CASTING.
text> = ...






Addresses (Business Address Services)   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 3930 Date: 20240523 Time: 154953     sap01-206 ( 61 ms )