Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member

Hi there.

As it was shown in previous example it's possible to supply any data into RFC enabled FORM. But, at the same time direct usage of IMPORT clause requires explicit specification of the ID's in data buffer and also involves some manual work to define types. Fortunately there is a special class CL_ABAP_IMPEXP_UTILITIES that could handle all dirty work.

The only limitation I've found - it works pretty good with DDIC types, but for custom defined types it could fail without any detailed explanation.

This greatly simplifies extension of the methods and makes code much more compact and readable.

I've tested this example with 50000 lines and seems ABAP can handle such amount of data. Generally for the parallel processing this should be enough.

So, here is the sample code:


REPORT Z_BINARY_TRANSFORM2.
data: x_b2      type xstring,
      lt_abc    type STANDARD TABLE OF t000,
      wa_t000  type t000.
INITIALIZATION.
* Fill table with sample data
wa_t000-mandt = sy-mandt.
wa_t000-mtext = 'SCN Demo #1'.
wa_t000-ort01 = 'Moscow'.
append wa_t000 to lt_abc.
wa_t000-mandt = sy-mandt.
wa_t000-mtext = 'SCN Demo #2'.
wa_t000-ort01 = 'Tokio'.
append wa_t000 to lt_abc.
* Export data into buffer
export tadir = lt_abc to DATA BUFFER x_b2 COMPRESSION on.
* Check the result
perform describe_buffer using x_b2.
form describe_buffer
  using in_buffer type xstring.
  data: lt_datatab type tab_cpar.
  FIELD-SYMBOLS: <fs> like line of lt_datatab,
                <fs2> type any table,
                <fs3> type any.
  lt_datatab = cl_abap_expimp_utilities=>dbuf_import_create_data( dbuf = in_buffer ).
  loop at lt_datatab assigning <fs>.
        write : <fs>-name.    " Here is the name of the currently processed tab in buffer
        new-line.
        assign <fs>-dref->* to <fs2>.
        loop at <fs2> assigning <fs3>.
                  write : <fs3>.
                  new-line.
        endloop.
  endloop.
endform.

1 Comment