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