Strings are character fields, which don't really have a size. As field type in a (DDIC) table that's not possible - but in Abap memory it is ! If you are not used to strings yet, you will be soon. They reflect a certain freedom to the developer. Instead of an internal table of 100-character fields holding 1000 lines, the same table defined as strings consumes a lot less memory space. How ? Smart SAP memory management.
The length of a text field or string can be determined with STRLEN
or with the DESCRIBE FIELD
statement.
The STRLEN
statement will return the length of a string, where DESCRIBE FIELD ... LENGTH ... IN CHARACTER MODE
can only be performed on variables of data type C,N, D or T (excluding strings). An example to get the string length:
data: lv_string type string, lv_length type p. "Packed number lv_string = '0123456789'. do 20 times. concatenate lv_string lv_string into lv_string. * WON'T WORK: the statement can not be used directly * write: / strlen( lv_string ). lv_length = strlen( lv_string ). write: / lv_length. * WON'T WORK: lv_string must be a character type * describe field lv_string length lv_length in character mode. enddo.
The outcome of this bit of coding demonstrates how long a string can become, which was for the above example:
{14 lines omitted} 327.680 655.360 1.310.720 2.621.440 5.242.880 10.485.760
Thus the string is actually holding over 10MB of data. There is a limit to this size, specified in system parameter ztta/max_memreq_MB
(check out RSPARAM
).