Для этого используем класс CL_GUI_FRONTEND_SERVICES и его метод CLIPBOARD_IMPORT.
types: begin of ty_s_senderline
, line(4096) type c
, end of ty_s_senderline
, ty_t_sender type ty_s_senderline occurs 0.
, line(4096) type c
, end of ty_s_senderline
, ty_t_sender type ty_s_senderline occurs 0.
data: t_file_table_clip type ty_t_sender. " таблица приемник
"получаем значение из буфера
call method cl_gui_frontend_services=>clipboard_import
importing
data = t_file_table_clip
exceptions
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
others = 4.
importing
data = t_file_table_clip
exceptions
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
others = 4.
В принципе это все, но может возникнуть проблема при копировании таблиц в буфер. Табличные значения разделяются специальным символом #.
Этот символ нельзя заменить обычным REPLACE, SHIFT и т.п., по крайней мере у меня не получилось. Но выход есть, я использовал класс CL_ABAP_CHAR_UTILITIES.
replace all occurrences of cl_abap_char_utilities=>horizontal_tab in t_file_table_clip-line with '@'.
После этих манипуляций значения можно раскидывать по полям своей внутренней таблицы.