diff --git a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
index 70a717e..83b5c69 100644
--- a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
@@ -106,8 +106,8 @@
-
-
+
+
method ZIF_EXCEL_READER~CAN_READ_FILE.
@@ -120,7 +120,7 @@
*--------------------------------------------------------------------*
* For now always Unknown
r_readable = abap_undefined.
-endmethod.
+ endmethod.
method ZIF_EXCEL_READER~LOAD.
@@ -186,7 +186,7 @@ endmethod.
*--------------------------------------------------------------------*
* issue#234 - error reading xlsx written by libre office
- me->zif_excel_reader~gv_use_alternate_zip = iv_use_alternate_zip.
+ me->zif_excel_reader~gv_use_alternate_zip = i_use_alternate_zip.
*--------------------------------------------------------------------*
@@ -223,10 +223,10 @@ endmethod.
ENDWHILE.
-endmethod.
+ endmethod.
- method ZIF_EXCEL_READER~LOAD_FILE.
+ METHOD zif_excel_reader~load_file.
*--------------------------------------------------------------------*
* ToDos:
* 2do§1 decision whether to load from frontend or backend
@@ -255,126 +255,24 @@ endmethod.
* changes: passing new optional input parameter to private attribute
*--------------------------------------------------------------------*
- CONSTANTS: lcv_load_from_frontend TYPE char1 VALUE 'F',
- lcv_load_from_backend TYPE char1 VALUE 'B'.
+ DATA: lv_excel_data TYPE xstring.
- DATA: lv_load_from_source TYPE char1,
+* issue#234 - error reading xlsx written by libre office
+ me->zif_excel_reader~gv_use_alternate_zip = i_use_alternate_zip.
- lv_filelength TYPE i,
- lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY,
- ls_binary_data LIKE LINE OF lt_binary_data,
-* Background processing
- lv_max_length_line TYPE i,
- lv_actual_length_line TYPE i,
-
- lv_errormessage TYPE string, " Can't pass '...'(abc) to exception-class
- lv_excel_data TYPE xstring. " Binary content of .xlsx file
-
-
-*--------------------------------------------------------------------*
-* ToDos: 2do§1 Decision whether to load from frontend or backend
-*--------------------------------------------------------------------*
+ IF i_from_applserver = abap_true.
+ lv_excel_data = me->read_from_applserver( i_filename = i_filename ).
+ ELSE.
+ lv_excel_data = me->read_from_local_file( i_filename = i_filename ).
+ ENDIF.
*--------------------------------------------------------------------*
* issue#234 - error reading xlsx written by libre office
- me->zif_excel_reader~gv_use_alternate_zip = iv_use_alternate_zip.
+ r_excel = me->zif_excel_reader~load( i_excel2007 = lv_excel_data
+ i_use_alternate_zip = i_use_alternate_zip ).
*--------------------------------------------------------------------*
-
-*--------------------------------------------------------------------*
-* Autodecide on frontend or backend reading
-* Background-processing --> backend reading
-* Online-processing --> frontend reading
-*--------------------------------------------------------------------*
- IF sy-batch = abap_true.
- lv_load_from_source = lcv_load_from_backend.
- ELSE.
- lv_load_from_source = lcv_load_from_frontend.
- ENDIF.
-
- CASE lv_load_from_source.
-
-*--------------------------------------------------------------------*
-* Read from backend
-*--------------------------------------------------------------------*
- WHEN lcv_load_from_backend.
- DESCRIBE FIELD ls_binary_data LENGTH lv_max_length_line IN BYTE MODE.
- OPEN DATASET i_filename FOR INPUT IN BINARY MODE.
- IF sy-subrc <> 0.
- lv_errormessage = 'A problem occured when reading the file'(001).
- RAISE EXCEPTION TYPE zcx_excel
- EXPORTING
- error = lv_errormessage.
- ENDIF.
- WHILE sy-subrc = 0.
-
- READ DATASET i_filename INTO ls_binary_data MAXIMUM LENGTH lv_max_length_line ACTUAL LENGTH lv_actual_length_line.
- APPEND ls_binary_data TO lt_binary_data.
- lv_filelength = lv_filelength + lv_actual_length_line.
-
- ENDWHILE.
- CLOSE DATASET i_filename.
-
-*--------------------------------------------------------------------*
-* Read from frontend
-*--------------------------------------------------------------------*
- WHEN lcv_load_from_frontend.
- cl_gui_frontend_services=>gui_upload( EXPORTING
- filename = i_filename
- filetype = 'BIN' " We are basically working with zipped directories --> force binary read
- IMPORTING
- filelength = lv_filelength
- CHANGING
- data_tab = lt_binary_data
- EXCEPTIONS
- file_open_error = 1
- file_read_error = 2
- no_batch = 3
- gui_refuse_filetransfer = 4
- invalid_type = 5
- no_authority = 6
- unknown_error = 7
- bad_data_format = 8
- header_not_allowed = 9
- separator_not_allowed = 10
- header_too_long = 11
- unknown_dp_error = 12
- access_denied = 13
- dp_out_of_memory = 14
- disk_full = 15
- dp_timeout = 16
- not_supported_by_gui = 17
- error_no_gui = 18
- OTHERS = 19 ).
- IF sy-subrc <> 0.
- lv_errormessage = 'A problem occured when reading the file'(001).
- RAISE EXCEPTION TYPE zcx_excel
- EXPORTING
- error = lv_errormessage.
- ENDIF.
-
- ENDCASE.
-
-
-*--------------------------------------------------------------------*
-* Binary data needs to be provided as XSTRING for further processing
-*--------------------------------------------------------------------*
- CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
- EXPORTING
- input_length = lv_filelength
- IMPORTING
- buffer = lv_excel_data
- TABLES
- binary_tab = lt_binary_data.
-
-*--------------------------------------------------------------------*
-* issue#234 - error reading xlsx written by libre office
- r_excel = me->zif_excel_reader~load( i_excel2007 = lv_excel_data
- iv_use_alternate_zip = iv_use_alternate_zip ).
-*--------------------------------------------------------------------*
-
-
-endmethod.
+ ENDMETHOD.
@@ -425,7 +323,7 @@ endmethod.
ENDWHILE.
-endmethod.
+ endmethod.
@@ -551,7 +449,7 @@ endmethod.
* issue#234 - end of insertion
*--------------------------------------------------------------------*
-endmethod.
+ endmethod.
@@ -597,7 +495,7 @@ endmethod.
lo_parser->set_validating( mode = if_ixml_parser=>co_no_validation ).
lo_parser->parse( ).
-endmethod.
+ endmethod.
@@ -749,7 +647,7 @@ endmethod.
lo_drawing->load_chart_attributes( rel_drawing-content_xml ).
endif.
-endmethod.
+ endmethod.
@@ -868,7 +766,7 @@ endmethod.
lo_node_si ?= lo_node_si->get_next( ).
ENDWHILE.
-endmethod.
+ endmethod.
@@ -1107,7 +1005,7 @@ endmethod.
ENDWHILE.
ENDIF.
-endmethod.
+ endmethod.
@@ -1237,7 +1135,7 @@ endmethod.
ENDWHILE.
-endmethod.
+ endmethod.
@@ -1355,7 +1253,7 @@ endmethod.
ENDWHILE.
-endmethod.
+ endmethod.
@@ -1481,7 +1379,7 @@ endmethod.
ENDWHILE.
-endmethod.
+ endmethod.
@@ -1594,13 +1492,13 @@ endmethod.
* 2do§1 Is 49 really the last predefined format?
-endmethod.
+ endmethod.
- METHOD load_workbook.
+ method LOAD_WORKBOOK.
*--------------------------------------------------------------------*
* ToDos:
* 2do§1 Move macro-reading from zcl_excel_reader_xlsm to this class
@@ -2013,13 +1911,13 @@ endmethod.
ENDWHILE.
-ENDMETHOD.
+ endmethod.
- METHOD load_worksheet.
+ method LOAD_WORKSHEET.
*--------------------------------------------------------------------*
* ToDos:
* 2do§1 Header/footer
@@ -2134,6 +2032,7 @@ ENDMETHOD.
END OF lty_datavalidation.
+
CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true',
lc_xml_attr_true_int TYPE string VALUE '1',
lc_rel_drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',
@@ -2227,7 +2126,6 @@ ENDMETHOD.
lv_datavalidation_range TYPE string,
lt_datavalidation_range TYPE TABLE OF string.
-
*--------------------------------------------------------------------*
* §2 We need to read the the file "\\_rels\.rels" because it tells
* us where in this folder structure the data for the workbook
@@ -2666,7 +2564,6 @@ ENDMETHOD.
" End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007
" Start fix 276 Read data validations
- "Add merge cell information
lo_ixml_datavalidations = lo_ixml_worksheet->get_elements_by_tag_name( name = 'dataValidation' ).
lo_ixml_iterator = lo_ixml_datavalidations->create_iterator( ).
lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ).
@@ -2717,7 +2614,7 @@ ENDMETHOD.
ENDWHILE.
" End fix 276 Read data validations
-ENDMETHOD.
+ endmethod.
@@ -2787,11 +2684,6 @@ ENDMETHOD.
path2 = path.
zcl_excel_common=>split_file( EXPORTING ip_file = path2
IMPORTING ep_extension = file_ext2 ).
-* CALL FUNCTION 'CV120_SPLIT_FILE'
-* EXPORTING
-* pf_file = path2
-* IMPORTING
-* pfx_extension = file_ext2.
rel_drawing-file_ext = file_ext2.
"-------------Added by Alessandro Iannacci - Should load graph xml
@@ -2841,7 +2733,110 @@ ENDMETHOD.
ENDDO.
-endmethod.
+ endmethod.
+
+
+
+
+ METHOD read_from_applserver.
+
+ DATA: lv_filelength TYPE i,
+ lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY,
+ ls_binary_data LIKE LINE OF lt_binary_data,
+ lv_filename TYPE string,
+ lv_max_length_line TYPE i,
+ lv_actual_length_line TYPE i,
+ lv_errormessage TYPE string.
+
+ MOVE i_filename TO lv_filename.
+
+ DESCRIBE FIELD ls_binary_data LENGTH lv_max_length_line IN BYTE MODE.
+ OPEN DATASET lv_filename FOR INPUT IN BINARY MODE.
+ IF sy-subrc <> 0.
+ lv_errormessage = 'A problem occured when reading the file'(001).
+ RAISE EXCEPTION TYPE zcx_excel
+ EXPORTING
+ error = lv_errormessage.
+ ENDIF.
+ WHILE sy-subrc = 0.
+
+ READ DATASET lv_filename INTO ls_binary_data MAXIMUM LENGTH lv_max_length_line ACTUAL LENGTH lv_actual_length_line.
+ APPEND ls_binary_data TO lt_binary_data.
+ lv_filelength = lv_filelength + lv_actual_length_line.
+
+ ENDWHILE.
+ CLOSE DATASET lv_filename.
+
+*--------------------------------------------------------------------*
+* Binary data needs to be provided as XSTRING for further processing
+*--------------------------------------------------------------------*
+ CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
+ EXPORTING
+ input_length = lv_filelength
+ IMPORTING
+ buffer = r_excel_data
+ TABLES
+ binary_tab = lt_binary_data.
+ ENDMETHOD.
+
+
+
+
+ METHOD read_from_local_file.
+ DATA: lv_filelength TYPE i,
+ lt_binary_data TYPE STANDARD TABLE OF x255 WITH NON-UNIQUE DEFAULT KEY,
+ ls_binary_data LIKE LINE OF lt_binary_data,
+ lv_filename TYPE string,
+ lv_errormessage TYPE string.
+
+ MOVE i_filename TO lv_filename.
+
+ cl_gui_frontend_services=>gui_upload( EXPORTING
+ filename = lv_filename
+ filetype = 'BIN' " We are basically working with zipped directories --> force binary read
+ IMPORTING
+ filelength = lv_filelength
+ CHANGING
+ data_tab = lt_binary_data
+ EXCEPTIONS
+ file_open_error = 1
+ file_read_error = 2
+ no_batch = 3
+ gui_refuse_filetransfer = 4
+ invalid_type = 5
+ no_authority = 6
+ unknown_error = 7
+ bad_data_format = 8
+ header_not_allowed = 9
+ separator_not_allowed = 10
+ header_too_long = 11
+ unknown_dp_error = 12
+ access_denied = 13
+ dp_out_of_memory = 14
+ disk_full = 15
+ dp_timeout = 16
+ not_supported_by_gui = 17
+ error_no_gui = 18
+ OTHERS = 19 ).
+ IF sy-subrc <> 0.
+ lv_errormessage = 'A problem occured when reading the file'(001).
+ RAISE EXCEPTION TYPE zcx_excel
+ EXPORTING
+ error = lv_errormessage.
+ ENDIF.
+
+*--------------------------------------------------------------------*
+* Binary data needs to be provided as XSTRING for further processing
+*--------------------------------------------------------------------*
+ CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
+ EXPORTING
+ input_length = lv_filelength
+ IMPORTING
+ buffer = r_excel_data
+ TABLES
+ binary_tab = lt_binary_data.
+
+ ENDMETHOD.
@@ -2885,10 +2880,10 @@ endmethod.
REPLACE REGEX '[^/]*/\.\./' IN rp_result WITH ``.
-endmethod.
+ endmethod.
- METHOD resolve_referenced_formulae.
+ method RESOLVE_REFERENCED_FORMULAE.
TYPES: BEGIN OF ty_referenced_cells,
sheet TYPE REF TO zcl_excel_worksheet,
si TYPE i,
@@ -2984,6 +2979,6 @@ endmethod.
ENDLOOP.
ENDLOOP.
-ENDMETHOD.
+ endmethod.