ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Character String and Byte String Processing → Statements for Character String and Byte String Processing
WRITE - TO
Other versions: 7.31 | 7.40 | 7.54
Syntax
WRITE {source|(source_name)} TO destination
[format_options].
Effect
The statement WRITE TO
prepares the content of a source either using
- predefined formats or
-
explicit formatting options
format_options
as a character string and assigns the formatted content to the character-like data object destination
.
The source field can be specified either statically or dynamically:
-
source
source
. source
is a
general expression position with the restriction that no
numeric literals,
arithmetic expressions, or
bit expressions can be specified directly.
-
source_name
source_name
, which must contain the name of the data object in question (non-case-sensitive).
If the data object specified in source_name
does not exist, no assignment
takes place and sy-subrc
is set to 4. When evaluating source_name
,
the same applies as to a dynamically specified
(name) in the statement ASSIGN
. The following can be specified for source_name
:
- Literal or constant
If the data objectsource_name
is specified as a text field literal or as a constant, it can be evaluated statically and the specified data object is identified as the used object.
- Variable
If the data objectsource_name
is specified as a variable, it is specified only dynamically and the content is not evaluated statically.
name
is not evaluated until runtime (in both cases).
Only the data types grouped together under the simple
generic type can be used as source fields.
- All flat data types; flat
structures are handled like a data object of type
c
and can only contain any character-like components.
- The data types
STRING
andXSTRING
- enumeration types; the name (maximum three characters) of the enumerated constant is used in uppercase letters, which defines the the current enumerated value.
The target field destination
must be character-like and flat.
-
If the length of the target field
destination
is less than the length of the data object format either predefined or specified usingformat_options
, the output (when formatted and assigned) is shortened in accordance with a type-specific cutoff behavior. -
If the available length exceeds the length required for formatting, the system places the result in
the target field based on the predefined or self-defined alignment and fills the non-required space with blanks.
System Fields
sy-subrc | Meaning |
---|---|
0 (means: | The data object specified in source_name was found and the assignment was performed. |
4 | The data object specified in source_name could not be found and the assignment was not performed. |
If the static source
is specified, sy-subrc
is not set.
Notes
-
Although the statement
WRITE TO
does not send any data to an output medium, the system may execute a conversion routine. -
The statement
WRITE TO
is primarily designed for formatting data for output purposes but not for further internal processing. For example, a field can no longer be handled as a numeric data object if the decimal separator is displayed as a comma. -
No numeric literals can be specified between
WRITE
andTO
. This is because, in this case, the statement cannot be distinguished from aWRITE
statement with a specified position. -
Use of the
WRITE TO
statement can be replaced in most cases by embedded expressions in string templates of string expressions. -
It is possible to use string templates as source fields for the statement WRITE
TO, but this is not usually recommended since both
WRITE TO
and string templates are used to format data and only a single method should be used. It is best to use string templates only.
Example
After the assignment, the variables date_short
and date_long
contain the current local date in the order specified in the user master record. The variable
date_long contains the separators defined there. The variable date_short
does not contain any separators since their length is not sufficient. The content of the variable
date_mask is formatted according to the formatting addition DD/MM/YY
, for which their length is sufficient.
DATA: date_long TYPE c LENGTH 10,
date_short TYPE c LENGTH 8,
date_mask TYPE c LENGTH 8.
WRITE sy-datlo TO: date_short,
date_long,
date_mask DD/MM/YY.
Exceptions
Handleable Exceptions
If one of the following handleable exceptions is raised in the output of a decimal floating point number,
the target field or output of the statement WRITE
is filled using asterisks ("*").
CX_SY_WRITE_INVALID_STYLE
-
Cause: Incorrect output format for decimal floating point numbers with the
STYLE
addition.
Runtime error:WRITE_INVALID_STYLE
CX_SY_CONVERSION_NO_NUMBER
-
Cause: Invalid format of the source field in the output of a decimal floating point number.
Runtime error:CONVT_NO_NUMBER
CX_SY_CONVERSION_OVERFLOW
-
Cause: Target field is too short to display a decimal floating point number.
Runtime error:CONVT_OVERFLOW
Non-Handleable Exceptions
-
Cause: Negative length specified when offset/length is specified.
Runtime error:WRITE_TO_LENGTH_NEGATIVE
-
Cause: Negative offset specified when offset/length is specified.
Runtime error:WRITE_TO_OFFSET_NEGATIVE
-
Cause: Offset specified when offset/length is specified is greater than the field length.
Runtime error:WRITE_TO_OFFSET_TOOLARGE
-
Cause:
CURRENCY
parameter inWRITE
does not have typec
Runtime error:WRITE_CURRENCY_ILLEGAL_TYPE
-
Cause: Rounding parameter less than -14
Runtime error:WRITE_ROUND_TOO_SMALL
-
Cause:
UNIT
parameter inWRITE
does not have typec
Runtime error:WRITE_UNIT_ILLEGAL_TYPE
-
Cause: Incomplete rules for a time zone when using the addition
TIME ZONE
Runtime error:CONVERT_TSTMP_INCONSISTENT_TAB