ARTICLE
WRITE - Output Length
When data is written with a WRITE statement, the output is stored
in the list buffer and accessed from
there for display when the list is called.
Each time a data object is output with a WRITE statement, an
output length is defined, either implicitly (according to the table
below), or explicitly (if len is specified after
the addition AT ) . The output length defines the following:
The number of places (or memory spaces) available for characters in the
list buffer,
The number of columns (or cells) available in the actual list.
Predefined Output Lengths
If the output length is not specified explicitly, it is set for
predefined ABAP types as shown in the following tables:
Notes
With all data objects, except those of type string , and with text
field literals, it is possible that fewer characters are displayed in
the list than are stored in the list buffer when predefined output
lengths are used. With data objects of data type string and text
field literals it is assumed that all characters should be displayed.
For this reason the implicit output length is calculated using the
characters contained in the data object so that it corresponds to the
number of columns needed in the list. Any blanks added in the list
buffer are removed when the actual list is written.
For data objects whose data types are defined in reference to ABAP
Dictionary, a different output length can be specified in the cor
responding domains. The output length specified there is used instead of
the implicit output length from the table above.
Numeric Data Types
Data Type Output Length
b 3
s 5
i 11
int8 20
p 2 x length of dobj (+ 1, if there is a decimal
separator)
decfloat16 24
decfloat34 46
f 24
Note
The predefined output length specified in the table above for the type
s is not sufficient to display the sign for a 5-digit number.
With type i
Bei den Typen i und int8
the length is sufficient for numbers without decimal separators.
Character-Like Data Types
Data Type Output Length
c Length of dobj , maximum 255
string In non-Unicode
programs , the number of characters contained in dobj . In
Unicode programs the number of columns needed in the list. If this is
greater than the number of characters in dobj , the surplus places
are padded with blanks when written to the list buffer. The padding
takes place to the right of left-aligned output, to the left of
right-aligned output and by turns to the right and to the left of
centered output.
n Length of dobj , maximum 255
d 8
t 6
The output lengths of text field literals in Unicode programs is set in
the same way as those of data objects of the data type string .
The actual data type ( c ) is only respected in non-Unicode
programs.
Notes
The predefined output lengths given in the table above for the types
d and t are not sufficient to display the correct
separator .
For the data types SSTRING and STRING , it is not possible
specify an output length in ABAP Dictionary and the lengths given in the
table above always apply.
Byte-Like Data Types
Data Type Output Length
x 2 x length of dobj , maximum 255
xstring 2 x number of bytes contained
Note
For the data type RAWSTRING , it is not possible specify an output
length in ABAP Dictionary and the lengths given in the table above
always apply.
Output Length in List Buffer
If the output length is shorter than the length of the data format
specified for the data object or defined using
int_format_options , the output is shortened in accordance with the
cutoff behavior described in
WRITE ... TO .
If the output length is greater than the length of a predefined or
user-defined format, this output length is filled in the list buffer and
output is arranged there according to the predefined or user-defined
alignment. Space that is not required is padded with blanks.
Output Length in the List
When displaying or printing a list, the content stored in the list
buffer is passed to the list as follows:
In non- Unicode systems , each character
requires the same amount of space in the list buffer as columns in the
list. In single-byte systems, a character occupies one byte in the list
buffer and one column in the list, while a character that occupies
several bytes in the list buffer in multi-byte systems also occupies the
same number of columns in the list. For this reason, all the characters
stored in the list buffer are displayed in the list in non-Unicode
systems.
In Unicode systems, each character usually occupies one place in the
list buffer. However, a character can occupy more than one column in the
list (this is particularly the case with East Asian characters).
However, since the list only contains the same number of columns as
there are places in the list buffer, this means the list can only
display fewer characters than are stored in the list buffer. The list
output is then shortened when passed from the list buffer to the list,
left-aligned output is shortened from the right, right-aligned output is
shortened from the left. Centered output is shortened by the alternate
removal of the first blank from both sides, starting with the side with
the most blanks, then other characters are removed from the right hand
side. If characters are removed when passed from the list buffer to the
list, this is indicated on the left hand side with the character <(>
and on the right hand side by the character . On a
displayed list, the entire list content can be displayed by choosing
System - List - Unicode Display .
Class for Calculating Output Lengths
The methods of the system class
CL_ABAP_LIST_UTILITIES can be used to calculate output lengths in
the list buffer and in list display. The return values of these methods
can be used to program a correct column alignment for ABAP lists, even
if they contain characters that require more than one column.
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved