diff --git a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
index c7824eb..e30e08f 100644
--- a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
@@ -226,7 +226,7 @@
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,129 +255,24 @@
* 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
-
-DATA: lv_filename TYPE string.
-
-*--------------------------------------------------------------------*
-* 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 = i_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 I_FROM_APPLSERVER = abap_true.
- lv_load_from_source = lcv_load_from_backend.
- ELSE.
- lv_load_from_source = lcv_load_from_frontend.
- ENDIF.
-
- move i_filename TO lv_filename.
-
- 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 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.
-
-*--------------------------------------------------------------------*
-* Read from frontend
-*--------------------------------------------------------------------*
- WHEN lcv_load_from_frontend.
- 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.
-
- 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
- i_use_alternate_zip = i_use_alternate_zip ).
-*--------------------------------------------------------------------*
-
-
- endmethod.
+ ENDMETHOD.
@@ -2710,11 +2605,6 @@ DATA: lv_filename TYPE string.
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
@@ -2766,6 +2656,109 @@ DATA: lv_filename TYPE string.
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.
+