ABAP Keyword Documentation → ABAP Programming Guidelines → Robust ABAP → Assignments, Calculations, and Other Types of Data Access
Casting
Other versions: 7.31 | 7.40 | 7.54
Background
Casting refers to the process of handling a data object by assuming a certain data type. This definition is different to the meaning of the concept in other programming languages, such as Java. Here, casting means a different concept which is referred to as 'conversion' in ABAP. Casting in ABAP is either explicit or implicit:
- Explicit casting is possible by using the
CASTING
addition with the ASSIGN statement and by using theASSIGNING
addition in statements for processing internal tables. Assignments between reference variables allow upcasts and downcasts. Obsolete explicit casting is also possible for formal parameters and field symbols, if you use theSTRUCTURE
addition.
- Implicit casting is sometimes performed for special assignments or during operand handling at certain operand positions. A common example is handling flat structures with purely character-like components as a single field of type c. A common example is handling flat structures with purely character-like components as a single field of type c. Outside of Unicode programs, this even applies to any type of flat structure.
Rule
Avoid implicit casting
Avoid implicit casting. If you need to cast to another data type, you can usually implement this explicitly using ASSIGN ... CASTING
.
Details
Implicit casting can potentially occur if structures are used as follows:
- Value assignments between incompatible structures or structures and elementary data objects
- Comparisons between structures and elementary data objects
- Using structures in operand positions where elementary data objects are expected
- Reading from the database using
SELECT * ... INTO wa
- Using the
INCREMENT
addition for theASSIGN
statement
The use of implicit casting is prone to errors and results in source code that is difficult to understand.
If you use the CASTING
addition when handling field symbols, you can implement explicit casting, which is easier to follow and understand. The explicit casting option is a very important reason to
use field symbols.
Bad example
The following source code shows the assignment of a text string to a structure with only character-like
components. An implicit casting occurs here, which is regarded as undesirable according to the above rule. The entire structure is handled as a text field of type c
and length 6.
comp1 TYPE c LENGTH 2,
comp2 TYPE c LENGTH 4,
END OF structure.
DATA structure TYPE structure.
DATA text TYPE string.
...
text = ...
structure = text.
Good example
The following source code improves the example above, by assigning the structure to a field symbol of type c. Explicit casting occurs. Only the character-type field symbol is used to handle the structure as a character-type field.
...
FIELD-SYMBOLS <text> TYPE c.
...
ASSIGN structure TO <text> CASTING.
<text> = ...