Загрузка из Excel через cl_fdt_xl_spreadsheet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
TRY. DATA: lv_rc TYPE i. DATA: it_files TYPE filetable. DATA: lv_action TYPE i. cl_gui_frontend_services=>file_open_dialog( EXPORTING file_filter = |xlsx (*.xlsx)\|*.xlsx\|{ cl_gui_frontend_services=>filetype_all }| CHANGING file_table = it_files rc = lv_rc user_action = lv_action ). IF lv_action = cl_gui_frontend_services=>action_ok. IF lines( it_files ) > 0. DATA: lv_filesize TYPE w3param-cont_len. DATA: lv_filetype TYPE w3param-cont_type. DATA: it_bin_data TYPE w3mimetabtype. cl_gui_frontend_services=>gui_upload( EXPORTING filename = |{ it_files[ 1 ]-filename }| filetype = 'BIN' IMPORTING filelength = lv_filesize CHANGING data_tab = it_bin_data ). DATA(lv_bin_data) = cl_bcs_convert=>solix_to_xstring( it_solix = it_bin_data ). DATA(o_excel) = NEW cl_fdt_xl_spreadsheet( document_name = CONV #( it_files[ 1 ]-filename ) xdocument = lv_bin_data ). DATA: it_worksheet_names TYPE if_fdt_doc_spreadsheet=>t_worksheet_names. o_excel->if_fdt_doc_spreadsheet~get_worksheet_names( IMPORTING worksheet_names = it_worksheet_names ). IF lines( it_worksheet_names ) > 0. DATA(o_worksheet_itab) = o_excel->if_fdt_doc_spreadsheet~get_itab_for_alv_update( ). ASSIGN o_worksheet_itab->* TO FIELD-SYMBOL(<worksheet>). TRY. DATA: o_salv TYPE REF TO cl_salv_table. cl_salv_table=>factory( IMPORTING r_salv_table = o_salv CHANGING t_table = <worksheet> ). o_salv->get_functions( )->set_all( abap_true ). o_salv->get_columns( )->set_optimize( abap_true ). o_salv->get_display_settings( )->set_list_header( 'Worksheet' ). o_salv->get_display_settings( )->set_striped_pattern( abap_true ). o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ). LOOP AT o_salv->get_columns( )->get( ) ASSIGNING FIELD-SYMBOL(<c>). DATA(o_col) = <c>-r_column. o_col->set_short_text( || ). o_col->set_medium_text( || ). o_col->set_long_text( |{ o_col->get_columnname( ) }| ). ENDLOOP. o_salv->display( ). CATCH cx_root INTO DATA(e_txt). WRITE: / e_txt->get_text( ). ENDTRY. ENDIF. ENDIF. ENDIF. CATCH cx_root INTO DATA(e_text). MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'. ENDTRY. |
ABAP программа загрузки данных из EXCEL в SAP систему. Разберу на примере загрузку Excel файла, проверку и преобразование данных, полученных при загрузке ABAP. Это полезная и часто используемая задача. В описании под видео ссылка для копирования кода программы. Видео: https://youtu.be/I15Bzt5Klrc