Large strings: type
XSTRING can be used to hold large XML file content or even in the process of creating a PDF file.
XSTRING is a predefined data type in Abap/4. It works pretty much like a string, but with no limits to it's size. Both
XSTRING have a variabele maximum size.
The maximum size of
STRING is determined by a systems profile parameter
ztta/max_memreq_MB - "Limit for a single request to memory" which is set to 2047 on our system (Check report
RSPARAM). That's 2047MB of data in a String, makes you wonder what xstring is really for ? Me too.
To transform your string into an xstring, there is a utility class available, which can be used like so:
data: lv_string_input type string, lv_string_output type xsequence, lv_length type i, lo_convout type ref to cl_abap_conv_out_ce. try. l_convout = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ). l_convout->convert( exporting data = im_string importing buffer = lv_string_output len = lv_length ). catch cx_root. message 'Conversion failure' type 'E'. endtry.
SCMS_STRING_TO_XSTRING gets this job done (as function module call). There is also a module
SCMS_XSTRING_TO_BINARYwhich can be used to save your data as a binary file, as per example:
data lt_binary_records type table of x255 with header line. lv_file_len = xstrlen( lv_xml_xstring ). call function 'SCMS_XSTRING_TO_BINARY' exporting buffer = lv_xml_xstring tables binary_tab = lt_binary_records. open dataset p_file for output in binary mode. loop at lt_binary_records. transfer lt_binary_records to p_file. endloop. close dataset p_file.