понедельник, 26 ноября 2012 г.

Импорт данных из буфера обмена

Для этого используем класс CL_GUI_FRONTEND_SERVICES и его метод CLIPBOARD_IMPORT.


  typesbegin of ty_s_senderline
       
line(4096)         type c
       
end of ty_s_senderline
       
ty_t_sender         type ty_s_senderline  occurs 0.

datat_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.




В принципе это все, но может возникнуть проблема при копировании таблиц в буфер. Табличные значения разделяются специальным символом #. 



Этот символ нельзя заменить обычным REPLACE, SHIFT и т.п., по крайней мере у меня не получилось. Но выход есть, я использовал класс CL_ABAP_CHAR_UTILITIES.

replace all occurrences of cl_abap_char_utilities=>horizontal_tab in t_file_table_clip-line with '@'.

После этих манипуляций значения можно раскидывать по полям своей внутренней таблицы.