diff --git a/src/demos/zdemo_excel26.prog.abap b/src/demos/zdemo_excel26.prog.abap index 32b7dc7..041223f 100644 --- a/src/demos/zdemo_excel26.prog.abap +++ b/src/demos/zdemo_excel26.prog.abap @@ -96,6 +96,8 @@ START-OF-SELECTION. * ALV user command *--------------------------------------------------------------------* FORM user_command . + DATA: lo_error TYPE REF TO zcx_excel, + lv_message TYPE string. IF sy-ucomm = 'EXCEL'. * get save file path @@ -118,7 +120,12 @@ FORM user_command . INTO l_path. * export file to save file path + TRY. PERFORM export_to_excel. + CATCH zcx_excel INTO lo_error. + lv_message = lo_error->get_text( ). + MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. + ENDTRY. ENDIF. ENDFORM. " USER_COMMAND @@ -129,6 +136,9 @@ ENDFORM. " USER_COMMAND * This subroutine is principal demo session *--------------------------------------------------------------------* FORM export_to_excel RAISING zcx_excel. + DATA: lo_error TYPE REF TO zcx_excel, + lv_message TYPE string. + * create zcl_excel_worksheet object CREATE OBJECT lo_excel. @@ -136,15 +146,12 @@ FORM export_to_excel RAISING zcx_excel. lo_worksheet->set_title( ip_title = 'Sheet1' ). * write to excel using method Bin_object - TRY. lo_worksheet->bind_alv( io_alv = lo_salv it_table = gt_sbook i_top = 2 i_left = 1 ). - CATCH zcx_excel . - ENDTRY. PERFORM write_file. @@ -157,7 +164,7 @@ ENDFORM. "EXPORT_TO_EXCEL * --> p1 text * <-- p2 text *----------------------------------------------------------------------* -FORM write_file . +FORM write_file RAISING zcx_excel. DATA: lt_file TYPE solix_tab, l_bytecount TYPE i, l_file TYPE xstring. diff --git a/src/demos/zdemo_excel27.prog.abap b/src/demos/zdemo_excel27.prog.abap index 81a4733..3fcf7c3 100644 --- a/src/demos/zdemo_excel27.prog.abap +++ b/src/demos/zdemo_excel27.prog.abap @@ -10,7 +10,9 @@ REPORT zdemo_excel27. CLASS lcl_app DEFINITION. PUBLIC SECTION. - METHODS main. + METHODS main + RAISING + zcx_excel. PRIVATE SECTION. METHODS conditional_formatting_cellis IMPORTING @@ -20,14 +22,18 @@ CLASS lcl_app DEFINITION. op TYPE zexcel_condition_operator f TYPE zexcel_style_formula f2 TYPE zexcel_style_formula - numfmt TYPE string. + numfmt TYPE string + RAISING + zcx_excel. METHODS conditional_formatting_textfun IMPORTING column TYPE simple row TYPE zexcel_cell_row txtfun TYPE zcl_excel_style_cond=>tv_textfunction text TYPE string - numfmt TYPE string. + numfmt TYPE string + RAISING + zcx_excel. ENDCLASS. CONSTANTS: c_fish TYPE string VALUE 'Fish'. @@ -53,8 +59,16 @@ INCLUDE zdemo_excel_outputopt_incl. START-OF-SELECTION. + DATA: lo_error TYPE REF TO zcx_excel, + lv_message TYPE string. + CREATE OBJECT lo_app. + TRY. lo_app->main( ). + CATCH zcx_excel INTO lo_error. + lv_message = lo_error->get_text( ). + MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. + ENDTRY. CLASS lcl_app IMPLEMENTATION. diff --git a/src/demos/zdemo_excel32.prog.abap b/src/demos/zdemo_excel32.prog.abap index b1915a5..f71499f 100644 --- a/src/demos/zdemo_excel32.prog.abap +++ b/src/demos/zdemo_excel32.prog.abap @@ -97,6 +97,8 @@ START-OF-SELECTION. * ALV user command *--------------------------------------------------------------------* FORM user_command . + DATA: lo_error TYPE REF TO zcx_excel, + lv_message TYPE string. * get save file path cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). @@ -117,6 +119,7 @@ FORM user_command . * export file to save file path + TRY. CASE sy-ucomm. WHEN 'EXCELBIND'. CONCATENATE l_path lv_file_separator lv_default_file_name @@ -130,6 +133,12 @@ FORM user_command . PERFORM export_to_excel_conv. ENDCASE. + + CATCH zcx_excel INTO lo_error. + lv_message = lo_error->get_text( ). + MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. + ENDTRY. + ENDFORM. " USER_COMMAND *--------------------------------------------------------------------* * FORM EXPORT_TO_EXCEL_CONV @@ -193,7 +202,7 @@ ENDFORM. "EXPORT_TO_EXCEL_BIND * --> p1 text * <-- p2 text *----------------------------------------------------------------------* -FORM write_file . +FORM write_file RAISING zcx_excel. DATA: lt_file TYPE solix_tab, l_bytecount TYPE i, l_file TYPE xstring. diff --git a/src/demos/zdemo_excel_outputopt_incl.prog.abap b/src/demos/zdemo_excel_outputopt_incl.prog.abap index 2852378..fecdc97 100644 --- a/src/demos/zdemo_excel_outputopt_incl.prog.abap +++ b/src/demos/zdemo_excel_outputopt_incl.prog.abap @@ -5,7 +5,8 @@ CLASS lcl_output DEFINITION CREATE PRIVATE. PUBLIC SECTION. CLASS-METHODS: output IMPORTING cl_excel TYPE REF TO zcl_excel - iv_writerclass_name TYPE clike OPTIONAL, + iv_writerclass_name TYPE clike OPTIONAL + RAISING zcx_excel, f4_path RETURNING VALUE(selected_folder) TYPE string, parametertexts. diff --git a/src/demos/zdemo_excel_wda01.wdyn.xml b/src/demos/zdemo_excel_wda01.wdyn.xml index 72fea4b..56c56ce 100644 --- a/src/demos/zdemo_excel_wda01.wdyn.xml +++ b/src/demos/zdemo_excel_wda01.wdyn.xml @@ -969,148 +969,176 @@ V_MAIN ONACTIONBTN_DOWNLOAD 8 - CREATE OBJECT lo_excel. + TRY. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 9 - lo_worksheet = lo_excel->get_active_worksheet( ). + CREATE OBJECT lo_excel. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 10 + lo_worksheet = lo_excel->get_active_worksheet( ). ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 11 - lo_worksheet->set_cell( ip_column = 'B' ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 12 - ip_row = '2' + lo_worksheet->set_cell( ip_column = 'B' ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 13 - ip_value = 'Welcome to Web Dynpro and abap2xlsx.' ). + ip_row = '2' ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 14 + ip_value = 'Welcome to Web Dynpro and abap2xlsx.' ). ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 15 - CREATE OBJECT lo_excel_writer. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 16 - lv_content = lo_excel_writer->zif_excel_writer~write_file( lo_excel ). + CREATE OBJECT lo_excel_writer. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 17 + lv_content = lo_excel_writer->zif_excel_writer~write_file( lo_excel ). ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 18 - DATA: lv_filename TYPE string. + CATCH zcx_excel. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 19 - lv_filename = 'wda01.xlsx'. + "Unlikely, ignore to keep demo simple. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 20 + ENDTRY. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 21 - CALL METHOD cl_wd_runtime_services=>attach_file_to_response ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 22 - EXPORTING + DATA: lv_filename TYPE string. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 23 - i_filename = lv_filename + lv_filename = 'wda01.xlsx'. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 24 - i_content = lv_content ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 25 - i_mime_type = 'EXCEL' + CALL METHOD cl_wd_runtime_services=>attach_file_to_response ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 26 - i_in_new_window = abap_false + EXPORTING ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 27 - i_inplace = abap_false. + i_filename = lv_filename ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 28 + i_content = lv_content ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 29 + i_mime_type = 'EXCEL' + + + ZDEMO_EXCEL_WDA01 + V_MAIN + ONACTIONBTN_DOWNLOAD + 30 + i_in_new_window = abap_false + + + ZDEMO_EXCEL_WDA01 + V_MAIN + ONACTIONBTN_DOWNLOAD + 31 + i_inplace = abap_false. + + + ZDEMO_EXCEL_WDA01 + V_MAIN + ONACTIONBTN_DOWNLOAD + 32 + + + ZDEMO_EXCEL_WDA01 + V_MAIN + ONACTIONBTN_DOWNLOAD + 33 ENDMETHOD. diff --git a/src/zcl_excel_autofilter.clas.abap b/src/zcl_excel_autofilter.clas.abap index d578f6a..06fa438 100644 --- a/src/zcl_excel_autofilter.clas.abap +++ b/src/zcl_excel_autofilter.clas.abap @@ -33,7 +33,9 @@ CLASS zcl_excel_autofilter DEFINITION !io_sheet TYPE REF TO zcl_excel_worksheet . METHODS get_filter_area RETURNING - VALUE(rs_area) TYPE zexcel_s_autofilter_area . + VALUE(rs_area) TYPE zexcel_s_autofilter_area + RAISING + zcx_excel . METHODS get_filter_range RETURNING VALUE(r_range) TYPE zexcel_cell_value diff --git a/src/zcl_excel_column.clas.abap b/src/zcl_excel_column.clas.abap index fc94416..ebf80eb 100644 --- a/src/zcl_excel_column.clas.abap +++ b/src/zcl_excel_column.clas.abap @@ -12,7 +12,9 @@ CLASS zcl_excel_column DEFINITION IMPORTING !ip_index TYPE zexcel_cell_column_alpha !ip_worksheet TYPE REF TO zcl_excel_worksheet - !ip_excel TYPE REF TO zcl_excel . + !ip_excel TYPE REF TO zcl_excel + RAISING + zcx_excel . METHODS get_auto_size RETURNING VALUE(r_auto_size) TYPE abap_bool . @@ -48,7 +50,9 @@ CLASS zcl_excel_column DEFINITION IMPORTING !ip_index TYPE zexcel_cell_column_alpha RETURNING - VALUE(io_column) TYPE REF TO zcl_excel_column . + VALUE(io_column) TYPE REF TO zcl_excel_column + RAISING + zcx_excel . METHODS set_outline_level IMPORTING !ip_outline_level TYPE int4 . diff --git a/src/zcl_excel_converter.clas.abap b/src/zcl_excel_converter.clas.abap index 8e599e4..25e4fd0 100644 --- a/src/zcl_excel_converter.clas.abap +++ b/src/zcl_excel_converter.clas.abap @@ -34,17 +34,23 @@ CLASS zcl_excel_converter DEFINITION EXPORTING !e_bytecount TYPE i !et_file TYPE solix_tab - !e_file TYPE xstring . + !e_file TYPE xstring + RAISING + zcx_excel . METHODS get_option RETURNING VALUE(rs_option) TYPE zexcel_s_converter_option . - METHODS open_file . + METHODS open_file + RAISING + zcx_excel . METHODS set_option IMPORTING !is_option TYPE zexcel_s_converter_option . METHODS write_file IMPORTING - !i_path TYPE string OPTIONAL . + !i_path TYPE string OPTIONAL + RAISING + zcx_excel . *"* protected components of class ZCL_EXCEL_CONVERTER *"* do not include other source files here!!! PROTECTED SECTION. diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index b8902cb..2ee2087 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -254,7 +254,9 @@ CLASS zcl_excel_reader_2007 DEFINITION METHODS load_worksheet_autofilter IMPORTING io_ixml_worksheet TYPE REF TO if_ixml_document - io_worksheet TYPE REF TO zcl_excel_worksheet. + io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel. METHODS load_worksheet_pagemargins IMPORTING !io_ixml_worksheet TYPE REF TO if_ixml_document @@ -276,7 +278,9 @@ CLASS zcl_excel_reader_2007 DEFINITION METHODS load_theme IMPORTING VALUE(iv_path) TYPE string - !ip_excel TYPE REF TO zcl_excel . + !ip_excel TYPE REF TO zcl_excel + RAISING + zcx_excel . PRIVATE SECTION. DATA zip TYPE REF TO lcl_zip_archive . diff --git a/src/zcl_excel_reader_huge_file.clas.abap b/src/zcl_excel_reader_huge_file.clas.abap index 1a2c9ed..17b56c4 100644 --- a/src/zcl_excel_reader_huge_file.clas.abap +++ b/src/zcl_excel_reader_huge_file.clas.abap @@ -68,7 +68,9 @@ CLASS zcl_excel_reader_huge_file DEFINITION METHODS put_cell_to_worksheet IMPORTING !io_worksheet TYPE REF TO zcl_excel_worksheet - !is_cell TYPE t_cell . + !is_cell TYPE t_cell + RAISING + zcx_excel. METHODS get_shared_string IMPORTING !iv_index TYPE any @@ -88,7 +90,8 @@ CLASS zcl_excel_reader_huge_file DEFINITION !io_reader TYPE REF TO if_sxml_reader !io_worksheet TYPE REF TO zcl_excel_worksheet RAISING - lcx_not_found . + lcx_not_found + zcx_excel . METHODS get_sxml_reader IMPORTING !iv_path TYPE string diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 432a945..1c7b97b 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -111,7 +111,9 @@ CLASS zcl_excel_worksheet DEFINITION IMPORTING !ip_column TYPE simple RETURNING - VALUE(eo_column) TYPE REF TO zcl_excel_column . + VALUE(eo_column) TYPE REF TO zcl_excel_column + RAISING + zcx_excel . METHODS add_new_style_cond IMPORTING !ip_dimension_range TYPE string DEFAULT 'A1' @@ -334,7 +336,9 @@ CLASS zcl_excel_worksheet DEFINITION IMPORTING !ip_column TYPE simple RETURNING - VALUE(eo_column) TYPE REF TO zcl_excel_column . + VALUE(eo_column) TYPE REF TO zcl_excel_column + RAISING + zcx_excel . METHODS get_columns RETURNING VALUE(eo_columns) TYPE REF TO zcl_excel_columns . @@ -352,7 +356,9 @@ CLASS zcl_excel_worksheet DEFINITION VALUE(ep_size) TYPE i . METHODS get_default_column RETURNING - VALUE(eo_column) TYPE REF TO zcl_excel_column . + VALUE(eo_column) TYPE REF TO zcl_excel_column + RAISING + zcx_excel. METHODS get_default_excel_date_format RETURNING VALUE(ep_default_excel_date_format) TYPE zexcel_number_format . @@ -575,7 +581,9 @@ CLASS zcl_excel_worksheet DEFINITION !ip_column_end TYPE simple OPTIONAL !ip_row TYPE zexcel_cell_row OPTIONAL !ip_row_to TYPE zexcel_cell_row OPTIONAL - !ip_style TYPE zexcel_cell_style OPTIONAL . + !ip_style TYPE zexcel_cell_style OPTIONAL + RAISING + zcx_excel . METHODS set_area_formula IMPORTING !ip_column_start TYPE simple @@ -594,7 +602,9 @@ CLASS zcl_excel_worksheet DEFINITION !ip_row TYPE zexcel_cell_row !ip_row_to TYPE zexcel_cell_row OPTIONAL !ip_style TYPE zexcel_cell_style - !ip_merge TYPE abap_bool OPTIONAL . + !ip_merge TYPE abap_bool OPTIONAL + RAISING + zcx_excel . METHODS set_area IMPORTING !ip_column_start TYPE simple diff --git a/src/zcl_excel_worksheet.clas.testclasses.abap b/src/zcl_excel_worksheet.clas.testclasses.abap index 6117e58..e33e3cf 100644 --- a/src/zcl_excel_worksheet.clas.testclasses.abap +++ b/src/zcl_excel_worksheet.clas.testclasses.abap @@ -15,9 +15,9 @@ CLASS lcl_excel_worksheet_test DEFINITION FOR TESTING CLASS-METHODS: class_teardown. METHODS: setup. METHODS: teardown. - METHODS: set_merge FOR TESTING. - METHODS: delete_merge FOR TESTING. - METHODS: get_dimension_range FOR TESTING. + METHODS: set_merge FOR TESTING RAISING cx_static_check. + METHODS: delete_merge FOR TESTING RAISING cx_static_check. + METHODS: get_dimension_range FOR TESTING RAISING cx_static_check. ENDCLASS. "lcl_Excel_Worksheet_Test @@ -78,9 +78,13 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION. CREATE OBJECT lo_excel. + TRY. CREATE OBJECT f_cut EXPORTING ip_excel = lo_excel. + CATCH zcx_excel. + cl_abap_unit_assert=>fail( 'Could not create instance' ). + ENDTRY. ENDMETHOD. "setup diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index 4319c63..b303750 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -48,13 +48,17 @@ CLASS zcl_excel_writer_2007 DEFINITION !io_document TYPE REF TO if_ixml_document !io_worksheet TYPE REF TO zcl_excel_worksheet RETURNING - VALUE(rv_ixml_sheet_data_root) TYPE REF TO if_ixml_element . + VALUE(rv_ixml_sheet_data_root) TYPE REF TO if_ixml_element + RAISING + zcx_excel . METHODS add_further_data_to_zip IMPORTING !io_zip TYPE REF TO cl_abap_zip . METHODS create RETURNING - VALUE(ep_excel) TYPE xstring . + VALUE(ep_excel) TYPE xstring + RAISING + zcx_excel . METHODS create_content_types RETURNING VALUE(ep_content) TYPE xstring . @@ -108,7 +112,9 @@ CLASS zcl_excel_writer_2007 DEFINITION IMPORTING !io_worksheet TYPE REF TO zcl_excel_worksheet RETURNING - VALUE(ep_content) TYPE xstring . + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . METHODS create_xl_relationships RETURNING VALUE(ep_content) TYPE xstring . @@ -161,13 +167,17 @@ CLASS zcl_excel_writer_2007 DEFINITION IMPORTING !io_table TYPE REF TO zcl_excel_table RETURNING - VALUE(ep_content) TYPE xstring . + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . METHODS create_xl_theme RETURNING VALUE(ep_content) TYPE xstring . METHODS create_xl_workbook RETURNING - VALUE(ep_content) TYPE xstring . + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . METHODS get_shared_string_index IMPORTING !ip_cell_value TYPE zexcel_cell_value