From 98d67652a98ca8b690d69607a9525922d562a628 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sat, 1 Jan 2022 12:46:10 +0100 Subject: [PATCH] refactor to use new collection classes (#937) * refactor to use new collection classes closes #880 * Update src/zcl_excel.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_comments.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_data_validations.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_drawings.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_worksheets.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_writer_csv.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_writer_huge_file.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_writer_xlsm.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_writer_2007.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_columns.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_fill_template.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_worksheet.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_ranges.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_reader_2007.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_rows.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_styles.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_styles_cond.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> --- src/zcl_excel.clas.abap | 60 ++-- src/zcl_excel_columns.clas.abap | 4 +- src/zcl_excel_comments.clas.abap | 4 +- src/zcl_excel_data_validations.clas.abap | 4 +- src/zcl_excel_drawings.clas.abap | 4 +- src/zcl_excel_fill_template.clas.abap | 5 +- src/zcl_excel_ranges.clas.abap | 4 +- src/zcl_excel_reader_2007.clas.abap | 138 ++++----- src/zcl_excel_rows.clas.abap | 47 +-- src/zcl_excel_styles.clas.abap | 4 +- src/zcl_excel_styles_cond.clas.abap | 4 +- src/zcl_excel_worksheet.clas.abap | 112 ++++---- src/zcl_excel_worksheets.clas.abap | 4 +- src/zcl_excel_writer_2007.clas.abap | 347 ++++++++++++----------- src/zcl_excel_writer_csv.clas.abap | 2 +- src/zcl_excel_writer_huge_file.clas.abap | 8 +- src/zcl_excel_writer_xlsm.clas.abap | 4 +- 17 files changed, 384 insertions(+), 371 deletions(-) diff --git a/src/zcl_excel.clas.abap b/src/zcl_excel.clas.abap index 0a709ec..738d760 100644 --- a/src/zcl_excel.clas.abap +++ b/src/zcl_excel.clas.abap @@ -78,13 +78,13 @@ CLASS zcl_excel DEFINITION IMPORTING !ip_type TYPE zexcel_drawing_type RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_next_table_id RETURNING VALUE(ep_id) TYPE i . METHODS get_ranges_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_static_cellstyle_guid IMPORTING !ip_cstyle_complete TYPE zexcel_s_cstyle_complete @@ -93,7 +93,7 @@ CLASS zcl_excel DEFINITION VALUE(ep_guid) TYPE zexcel_cell_style . METHODS get_styles_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_style_index_in_styles IMPORTING !ip_guid TYPE zexcel_cell_style @@ -113,7 +113,7 @@ CLASS zcl_excel DEFINITION !eo_theme TYPE REF TO zcl_excel_theme . METHODS get_worksheets_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_worksheets_name RETURNING VALUE(ep_name) TYPE zexcel_worksheets_name . @@ -364,6 +364,28 @@ CLASS zcl_excel IMPLEMENTATION. ENDMETHOD. + METHOD fill_template. + + DATA: lo_template_filler TYPE REF TO zcl_excel_fill_template. + + FIELD-SYMBOLS: + TYPE zexcel_sheet_title, + TYPE zcl_excel_template_data=>ts_template_data_sheet. + + + lo_template_filler = zcl_excel_fill_template=>create( me ). + + LOOP AT lo_template_filler->mt_sheet ASSIGNING . + + READ TABLE iv_data->mt_data ASSIGNING WITH KEY sheet = . + CHECK sy-subrc = 0. + lo_template_filler->fill_sheet( ). + + ENDLOOP. + + ENDMETHOD. + + METHOD get_active_sheet_index. r_active_worksheet = me->worksheets->active_worksheet. ENDMETHOD. @@ -403,7 +425,7 @@ CLASS zcl_excel IMPLEMENTATION. METHOD get_next_table_id. DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lv_tables_count TYPE i. lo_iterator = me->get_worksheets_iterator( ). @@ -461,7 +483,7 @@ CLASS zcl_excel IMPLEMENTATION. METHOD get_style_from_guid. DATA: lo_style TYPE REF TO zcl_excel_style, - lo_iterator TYPE REF TO cl_object_collection_iterator. + lo_iterator TYPE REF TO zcl_excel_collection_iterator. lo_iterator = styles->get_iterator( ). WHILE lo_iterator->has_next( ) = abap_true. @@ -477,7 +499,7 @@ CLASS zcl_excel IMPLEMENTATION. METHOD get_style_index_in_styles. DATA: index TYPE syindex. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, + DATA: lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_style TYPE REF TO zcl_excel_style. CHECK ip_guid IS NOT INITIAL. @@ -595,7 +617,7 @@ CLASS zcl_excel IMPLEMENTATION. METHOD set_active_sheet_index_by_name. - DATA: ws_it TYPE REF TO cl_object_collection_iterator, + DATA: ws_it TYPE REF TO zcl_excel_collection_iterator, ws TYPE REF TO zcl_excel_worksheet, lv_title TYPE zexcel_sheet_title, count TYPE i VALUE 1. @@ -675,26 +697,4 @@ CLASS zcl_excel IMPLEMENTATION. METHOD zif_excel_book_vba_project~set_vbaproject. me->zif_excel_book_vba_project~vbaproject = ip_vbaproject. ENDMETHOD. - - - METHOD fill_template. - - DATA: lo_template_filler TYPE REF TO zcl_excel_fill_template. - - FIELD-SYMBOLS: - TYPE zexcel_sheet_title, - TYPE zcl_excel_template_data=>ts_template_data_sheet. - - - lo_template_filler = zcl_excel_fill_template=>create( me ). - - LOOP AT lo_template_filler->mt_sheet ASSIGNING . - - READ TABLE iv_data->mt_data ASSIGNING WITH KEY sheet = . - CHECK sy-subrc = 0. - lo_template_filler->fill_sheet( ). - - ENDLOOP. - - ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_columns.clas.abap b/src/zcl_excel_columns.clas.abap index 06cfd48..c8779c6 100644 --- a/src/zcl_excel_columns.clas.abap +++ b/src/zcl_excel_columns.clas.abap @@ -18,7 +18,7 @@ CLASS zcl_excel_columns DEFINITION VALUE(eo_column) TYPE REF TO zcl_excel_column . METHODS get_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS is_empty RETURNING VALUE(is_empty) TYPE flag . @@ -41,7 +41,7 @@ CLASS zcl_excel_columns DEFINITION END OF mty_s_hashed_column , mty_ts_hashed_column TYPE HASHED TABLE OF mty_s_hashed_column WITH UNIQUE KEY column_index. - DATA columns TYPE REF TO cl_object_collection . + DATA columns TYPE REF TO zcl_excel_collection . DATA columns_hashed TYPE mty_ts_hashed_column . ENDCLASS. diff --git a/src/zcl_excel_comments.clas.abap b/src/zcl_excel_comments.clas.abap index a29c1b2..b0b897e 100644 --- a/src/zcl_excel_comments.clas.abap +++ b/src/zcl_excel_comments.clas.abap @@ -20,7 +20,7 @@ CLASS zcl_excel_comments DEFINITION VALUE(eo_comment) TYPE REF TO zcl_excel_comment . METHODS get_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS is_empty RETURNING VALUE(is_empty) TYPE flag . @@ -33,7 +33,7 @@ CLASS zcl_excel_comments DEFINITION PROTECTED SECTION. PRIVATE SECTION. - DATA comments TYPE REF TO cl_object_collection . + DATA comments TYPE REF TO zcl_excel_collection . ENDCLASS. diff --git a/src/zcl_excel_data_validations.clas.abap b/src/zcl_excel_data_validations.clas.abap index 6eec1f7..d3e99ea 100644 --- a/src/zcl_excel_data_validations.clas.abap +++ b/src/zcl_excel_data_validations.clas.abap @@ -15,7 +15,7 @@ CLASS zcl_excel_data_validations DEFINITION METHODS constructor . METHODS get_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS is_empty RETURNING VALUE(is_empty) TYPE flag . @@ -32,7 +32,7 @@ CLASS zcl_excel_data_validations DEFINITION *"* do not include other source files here!!! PRIVATE SECTION. - DATA data_validations TYPE REF TO cl_object_collection . + DATA data_validations TYPE REF TO zcl_excel_collection . ENDCLASS. diff --git a/src/zcl_excel_drawings.clas.abap b/src/zcl_excel_drawings.clas.abap index b5a69bd..7c4ea3b 100644 --- a/src/zcl_excel_drawings.clas.abap +++ b/src/zcl_excel_drawings.clas.abap @@ -26,7 +26,7 @@ CLASS zcl_excel_drawings DEFINITION VALUE(eo_drawing) TYPE REF TO zcl_excel_drawing . METHODS get_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS is_empty RETURNING VALUE(is_empty) TYPE flag . @@ -48,7 +48,7 @@ CLASS zcl_excel_drawings DEFINITION *"* private components of class ZCL_EXCEL_DRAWINGS *"* do not include other source files here!!! - DATA drawings TYPE REF TO cl_object_collection . + DATA drawings TYPE REF TO zcl_excel_collection . ENDCLASS. diff --git a/src/zcl_excel_fill_template.clas.abap b/src/zcl_excel_fill_template.clas.abap index f332eb5..6f8fff2 100644 --- a/src/zcl_excel_fill_template.clas.abap +++ b/src/zcl_excel_fill_template.clas.abap @@ -101,6 +101,7 @@ CLASS zcl_excel_fill_template IMPLEMENTATION. ENDMETHOD. + METHOD discard_overlapped. DATA: lt_range TYPE tt_ranges. @@ -520,9 +521,9 @@ CLASS zcl_excel_fill_template IMPLEMENTATION. METHOD get_range. DATA: - lo_worksheets_iterator TYPE REF TO cl_object_collection_iterator, + lo_worksheets_iterator TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_range_iterator TYPE REF TO cl_object_collection_iterator, + lo_range_iterator TYPE REF TO zcl_excel_collection_iterator, lo_range TYPE REF TO zcl_excel_range. diff --git a/src/zcl_excel_ranges.clas.abap b/src/zcl_excel_ranges.clas.abap index 9751e9c..8b591e7 100644 --- a/src/zcl_excel_ranges.clas.abap +++ b/src/zcl_excel_ranges.clas.abap @@ -19,7 +19,7 @@ CLASS zcl_excel_ranges DEFINITION VALUE(eo_range) TYPE REF TO zcl_excel_range . METHODS get_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS is_empty RETURNING VALUE(is_empty) TYPE flag . @@ -36,7 +36,7 @@ CLASS zcl_excel_ranges DEFINITION *"* do not include other source files here!!! PRIVATE SECTION. - DATA ranges TYPE REF TO cl_object_collection . + DATA ranges TYPE REF TO zcl_excel_collection . ENDCLASS. diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index 48154b3..1bc3cc3 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -344,7 +344,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. lt_outline_rows TYPE zcl_excel_worksheet=>mty_ts_outlines_row, ls_outline_row LIKE LINE OF lt_outline_rows, lo_row TYPE REF TO zcl_excel_row, - lo_row_iterator TYPE REF TO cl_object_collection_iterator, + lo_row_iterator TYPE REF TO zcl_excel_collection_iterator, lv_row_offset TYPE i, lv_row_collapse_flag TYPE i. @@ -2965,6 +2965,74 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. ENDMETHOD. + METHOD load_worksheet_autofilter. + + TYPES: BEGIN OF lty_autofilter, + ref TYPE string, + END OF lty_autofilter. + + DATA: lo_ixml_autofilter_elem TYPE REF TO if_ixml_element, + lv_ref TYPE string, + lo_ixml_filter_column_coll TYPE REF TO if_ixml_node_collection, + lo_ixml_filter_column_iter TYPE REF TO if_ixml_node_iterator, + lo_ixml_filter_column TYPE REF TO if_ixml_element, + lv_col_id TYPE i, + lv_column TYPE zexcel_cell_column, + lo_ixml_filters_coll TYPE REF TO if_ixml_node_collection, + lo_ixml_filters_iter TYPE REF TO if_ixml_node_iterator, + lo_ixml_filters TYPE REF TO if_ixml_element, + lo_ixml_filter_coll TYPE REF TO if_ixml_node_collection, + lo_ixml_filter_iter TYPE REF TO if_ixml_node_iterator, + lo_ixml_filter TYPE REF TO if_ixml_element, + lv_val TYPE string, + lo_autofilters TYPE REF TO zcl_excel_autofilters, + lo_autofilter TYPE REF TO zcl_excel_autofilter. + + lo_autofilters = io_worksheet->excel->get_autofilters_reference( ). + + lo_ixml_autofilter_elem = io_ixml_worksheet->find_from_name( 'autoFilter' ). + IF lo_ixml_autofilter_elem IS BOUND. + lv_ref = lo_ixml_autofilter_elem->get_attribute_ns( 'ref' ). + + lo_ixml_filter_column_coll = lo_ixml_autofilter_elem->get_elements_by_tag_name( name = 'filterColumn' ). + lo_ixml_filter_column_iter = lo_ixml_filter_column_coll->create_iterator( ). + lo_ixml_filter_column ?= lo_ixml_filter_column_iter->get_next( ). + WHILE lo_ixml_filter_column IS BOUND. + lv_col_id = lo_ixml_filter_column->get_attribute_ns( 'colId' ). + lv_column = lv_col_id + 1. + + lo_ixml_filters_coll = lo_ixml_filter_column->get_elements_by_tag_name( name = 'filters' ). + lo_ixml_filters_iter = lo_ixml_filters_coll->create_iterator( ). + lo_ixml_filters ?= lo_ixml_filters_iter->get_next( ). + WHILE lo_ixml_filters IS BOUND. + + lo_ixml_filter_coll = lo_ixml_filter_column->get_elements_by_tag_name( name = 'filter' ). + lo_ixml_filter_iter = lo_ixml_filter_coll->create_iterator( ). + lo_ixml_filter ?= lo_ixml_filter_iter->get_next( ). + WHILE lo_ixml_filter IS BOUND. + lv_val = lo_ixml_filter->get_attribute_ns( 'val' ). + + lo_autofilter = lo_autofilters->get( io_worksheet = io_worksheet ). + IF lo_autofilter IS NOT BOUND. + lo_autofilter = lo_autofilters->add( io_sheet = io_worksheet ). + ENDIF. + lo_autofilter->set_value( + i_column = lv_column + i_value = lv_val ). + + lo_ixml_filter ?= lo_ixml_filter_iter->get_next( ). + ENDWHILE. + + lo_ixml_filters ?= lo_ixml_filters_iter->get_next( ). + ENDWHILE. + + lo_ixml_filter_column ?= lo_ixml_filter_column_iter->get_next( ). + ENDWHILE. + ENDIF. + + ENDMETHOD. + + METHOD load_worksheet_cond_format. DATA: lo_ixml_cond_formats TYPE REF TO if_ixml_node_collection, @@ -3696,74 +3764,6 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. ENDMETHOD. - METHOD load_worksheet_autofilter. - - TYPES: BEGIN OF lty_autofilter, - ref TYPE string, - END OF lty_autofilter. - - DATA: lo_ixml_autofilter_elem TYPE REF TO if_ixml_element, - lv_ref TYPE string, - lo_ixml_filter_column_coll TYPE REF TO if_ixml_node_collection, - lo_ixml_filter_column_iter TYPE REF TO if_ixml_node_iterator, - lo_ixml_filter_column TYPE REF TO if_ixml_element, - lv_col_id TYPE i, - lv_column TYPE zexcel_cell_column, - lo_ixml_filters_coll TYPE REF TO if_ixml_node_collection, - lo_ixml_filters_iter TYPE REF TO if_ixml_node_iterator, - lo_ixml_filters TYPE REF TO if_ixml_element, - lo_ixml_filter_coll TYPE REF TO if_ixml_node_collection, - lo_ixml_filter_iter TYPE REF TO if_ixml_node_iterator, - lo_ixml_filter TYPE REF TO if_ixml_element, - lv_val TYPE string, - lo_autofilters TYPE REF TO zcl_excel_autofilters, - lo_autofilter TYPE REF TO zcl_excel_autofilter. - - lo_autofilters = io_worksheet->excel->get_autofilters_reference( ). - - lo_ixml_autofilter_elem = io_ixml_worksheet->find_from_name( 'autoFilter' ). - IF lo_ixml_autofilter_elem IS BOUND. - lv_ref = lo_ixml_autofilter_elem->get_attribute_ns( 'ref' ). - - lo_ixml_filter_column_coll = lo_ixml_autofilter_elem->get_elements_by_tag_name( name = 'filterColumn' ). - lo_ixml_filter_column_iter = lo_ixml_filter_column_coll->create_iterator( ). - lo_ixml_filter_column ?= lo_ixml_filter_column_iter->get_next( ). - WHILE lo_ixml_filter_column IS BOUND. - lv_col_id = lo_ixml_filter_column->get_attribute_ns( 'colId' ). - lv_column = lv_col_id + 1. - - lo_ixml_filters_coll = lo_ixml_filter_column->get_elements_by_tag_name( name = 'filters' ). - lo_ixml_filters_iter = lo_ixml_filters_coll->create_iterator( ). - lo_ixml_filters ?= lo_ixml_filters_iter->get_next( ). - WHILE lo_ixml_filters IS BOUND. - - lo_ixml_filter_coll = lo_ixml_filter_column->get_elements_by_tag_name( name = 'filter' ). - lo_ixml_filter_iter = lo_ixml_filter_coll->create_iterator( ). - lo_ixml_filter ?= lo_ixml_filter_iter->get_next( ). - WHILE lo_ixml_filter IS BOUND. - lv_val = lo_ixml_filter->get_attribute_ns( 'val' ). - - lo_autofilter = lo_autofilters->get( io_worksheet = io_worksheet ). - IF lo_autofilter IS NOT BOUND. - lo_autofilter = lo_autofilters->add( io_sheet = io_worksheet ). - ENDIF. - lo_autofilter->set_value( - i_column = lv_column - i_value = lv_val ). - - lo_ixml_filter ?= lo_ixml_filter_iter->get_next( ). - ENDWHILE. - - lo_ixml_filters ?= lo_ixml_filters_iter->get_next( ). - ENDWHILE. - - lo_ixml_filter_column ?= lo_ixml_filter_column_iter->get_next( ). - ENDWHILE. - ENDIF. - - ENDMETHOD. - - METHOD load_worksheet_pagemargins. TYPES: BEGIN OF lty_page_margins, diff --git a/src/zcl_excel_rows.clas.abap b/src/zcl_excel_rows.clas.abap index 92692b1..c8f0451 100644 --- a/src/zcl_excel_rows.clas.abap +++ b/src/zcl_excel_rows.clas.abap @@ -25,7 +25,7 @@ CLASS zcl_excel_rows DEFINITION VALUE(eo_row) TYPE REF TO zcl_excel_row . METHODS get_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS is_empty RETURNING VALUE(is_empty) TYPE flag . @@ -52,7 +52,7 @@ CLASS zcl_excel_rows DEFINITION END OF mty_s_hashed_row , mty_ts_hashed_row TYPE HASHED TABLE OF mty_s_hashed_row WITH UNIQUE KEY row_index. - DATA rows TYPE REF TO cl_object_collection . + DATA rows TYPE REF TO zcl_excel_collection . DATA rows_hashed TYPE mty_ts_hashed_row . ENDCLASS. @@ -102,6 +102,28 @@ CLASS zcl_excel_rows IMPLEMENTATION. ENDMETHOD. "GET_ITERATOR + METHOD get_max_index. + FIELD-SYMBOLS: TYPE mty_s_hashed_row. + + LOOP AT rows_hashed ASSIGNING . + IF -row_index > ep_index. + ep_index = -row_index. + ENDIF. + ENDLOOP. + ENDMETHOD. + + + METHOD get_min_index. + FIELD-SYMBOLS: TYPE mty_s_hashed_row. + + LOOP AT rows_hashed ASSIGNING . + IF ep_index = 0 OR -row_index < ep_index. + ep_index = -row_index. + ENDIF. + ENDLOOP. + ENDMETHOD. + + METHOD is_empty. is_empty = rows->is_empty( ). ENDMETHOD. "IS_EMPTY @@ -116,25 +138,4 @@ CLASS zcl_excel_rows IMPLEMENTATION. METHOD size. ep_size = rows->size( ). ENDMETHOD. "SIZE - - METHOD get_min_index. - FIELD-SYMBOLS: TYPE mty_s_hashed_row. - - LOOP AT rows_hashed ASSIGNING . - IF ep_index = 0 OR -row_index < ep_index. - ep_index = -row_index. - ENDIF. - ENDLOOP. - ENDMETHOD. - - METHOD get_max_index. - FIELD-SYMBOLS: TYPE mty_s_hashed_row. - - LOOP AT rows_hashed ASSIGNING . - IF -row_index > ep_index. - ep_index = -row_index. - ENDIF. - ENDLOOP. - ENDMETHOD. - ENDCLASS. diff --git a/src/zcl_excel_styles.clas.abap b/src/zcl_excel_styles.clas.abap index d64b5c6..edf1dff 100644 --- a/src/zcl_excel_styles.clas.abap +++ b/src/zcl_excel_styles.clas.abap @@ -19,7 +19,7 @@ CLASS zcl_excel_styles DEFINITION VALUE(eo_style) TYPE REF TO zcl_excel_style . METHODS get_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS is_empty RETURNING VALUE(is_empty) TYPE flag . @@ -43,7 +43,7 @@ CLASS zcl_excel_styles DEFINITION PROTECTED SECTION. PRIVATE SECTION. - DATA styles TYPE REF TO cl_object_collection . + DATA styles TYPE REF TO zcl_excel_collection . ENDCLASS. diff --git a/src/zcl_excel_styles_cond.clas.abap b/src/zcl_excel_styles_cond.clas.abap index aa4a1b7..854b706 100644 --- a/src/zcl_excel_styles_cond.clas.abap +++ b/src/zcl_excel_styles_cond.clas.abap @@ -19,7 +19,7 @@ CLASS zcl_excel_styles_cond DEFINITION VALUE(eo_style_cond) TYPE REF TO zcl_excel_style_cond . METHODS get_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS is_empty RETURNING VALUE(is_empty) TYPE flag . @@ -36,7 +36,7 @@ CLASS zcl_excel_styles_cond DEFINITION *"* do not include other source files here!!! PRIVATE SECTION. - DATA styles_cond TYPE REF TO cl_object_collection . + DATA styles_cond TYPE REF TO zcl_excel_collection . ENDCLASS. diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 9878bdc..aa516f2 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -50,8 +50,10 @@ CLASS zcl_excel_worksheet DEFINITION "! In other words, for a calculated column, a cell in that column is considered to have an error "! if its formula is different from the calculated column formula, or doesn't contain a formula at all. calculated_column TYPE abap_bool, - END OF mty_s_ignored_errors, - mty_th_ignored_errors TYPE HASHED TABLE OF mty_s_ignored_errors WITH UNIQUE KEY cell_coords, + END OF mty_s_ignored_errors . + TYPES: + mty_th_ignored_errors TYPE HASHED TABLE OF mty_s_ignored_errors WITH UNIQUE KEY cell_coords . + TYPES: BEGIN OF mty_s_column_formula, id TYPE i, column TYPE zexcel_cell_column, @@ -63,9 +65,10 @@ CLASS zcl_excel_worksheet DEFINITION END OF mty_s_column_formula . TYPES: mty_th_column_formula - TYPE HASHED TABLE OF mty_s_column_formula - WITH UNIQUE KEY id . - TYPES ty_doc_url TYPE c LENGTH 255. + TYPE HASHED TABLE OF mty_s_column_formula + WITH UNIQUE KEY id . + TYPES: + ty_doc_url TYPE c LENGTH 255 . TYPES: BEGIN OF mty_merge, row_from TYPE i, @@ -75,30 +78,33 @@ CLASS zcl_excel_worksheet DEFINITION END OF mty_merge . TYPES: mty_ts_merge TYPE SORTED TABLE OF mty_merge WITH UNIQUE KEY table_line . - TYPES ty_area TYPE c LENGTH 1. + TYPES: + ty_area TYPE c LENGTH 1 . - CONSTANTS c_break_column TYPE zexcel_break VALUE 2. "#EC NOTEXT - CONSTANTS c_break_none TYPE zexcel_break VALUE 0. "#EC NOTEXT - CONSTANTS c_break_row TYPE zexcel_break VALUE 1. "#EC NOTEXT - CONSTANTS: BEGIN OF c_area, - whole TYPE ty_area VALUE 'W', "#EC NOTEXT - topleft TYPE ty_area VALUE 'T', "#EC NOTEXT - END OF c_area. + CONSTANTS c_break_column TYPE zexcel_break VALUE 2 ##NO_TEXT. + CONSTANTS c_break_none TYPE zexcel_break VALUE 0 ##NO_TEXT. + CONSTANTS c_break_row TYPE zexcel_break VALUE 1 ##NO_TEXT. + CONSTANTS: + BEGIN OF c_area, + whole TYPE ty_area VALUE 'W', "#EC NOTEXT + topleft TYPE ty_area VALUE 'T', "#EC NOTEXT + END OF c_area . DATA excel TYPE REF TO zcl_excel READ-ONLY . - DATA print_gridlines TYPE zexcel_print_gridlines READ-ONLY VALUE abap_false. "#EC NOTEXT + DATA print_gridlines TYPE zexcel_print_gridlines READ-ONLY VALUE abap_false ##NO_TEXT. DATA sheet_content TYPE zexcel_t_cell_data . DATA sheet_setup TYPE REF TO zcl_excel_sheet_setup . - DATA show_gridlines TYPE zexcel_show_gridlines READ-ONLY VALUE abap_true. "#EC NOTEXT - DATA show_rowcolheaders TYPE zexcel_show_gridlines READ-ONLY VALUE abap_true. "#EC NOTEXT + DATA show_gridlines TYPE zexcel_show_gridlines READ-ONLY VALUE abap_true ##NO_TEXT. + DATA show_rowcolheaders TYPE zexcel_show_gridlines READ-ONLY VALUE abap_true ##NO_TEXT. DATA styles TYPE zexcel_t_sheet_style . DATA tabcolor TYPE zexcel_s_tabcolor READ-ONLY . DATA column_formulas TYPE mty_th_column_formula READ-ONLY . - CLASS-DATA: BEGIN OF c_messages READ-ONLY, - formula_id_only_is_possible TYPE string, - column_formula_id_not_found TYPE string, - formula_not_in_this_table TYPE string, - formula_in_other_column TYPE string, - END OF c_messages. + CLASS-DATA: + BEGIN OF c_messages READ-ONLY, + formula_id_only_is_possible TYPE string, + column_formula_id_not_found TYPE string, + formula_not_in_this_table TYPE string, + formula_in_other_column TYPE string, + END OF c_messages . DATA mt_merged_cells TYPE mty_ts_merge READ-ONLY . METHODS add_comment @@ -118,7 +124,7 @@ CLASS zcl_excel_worksheet DEFINITION IMPORTING !ip_dimension_range TYPE string DEFAULT 'A1' RETURNING - VALUE(eo_style_cond) TYPE REF TO zcl_excel_style_cond. + VALUE(eo_style_cond) TYPE REF TO zcl_excel_style_cond . METHODS add_new_data_validation RETURNING VALUE(eo_data_validation) TYPE REF TO zcl_excel_data_validation . @@ -184,7 +190,7 @@ CLASS zcl_excel_worksheet DEFINITION !ip_row_to TYPE zexcel_cell_row OPTIONAL !ip_style_changer TYPE REF TO zif_excel_style_changer RAISING - zcx_excel. + zcx_excel . METHODS change_cell_style IMPORTING !ip_column TYPE simple @@ -298,7 +304,7 @@ CLASS zcl_excel_worksheet DEFINITION VALUE(ep_guid) TYPE zexcel_cell_style RAISING zcx_excel . - CLASS-METHODS class_constructor. + CLASS-METHODS class_constructor . METHODS constructor IMPORTING !ip_excel TYPE REF TO zcl_excel @@ -353,13 +359,13 @@ CLASS zcl_excel_worksheet DEFINITION VALUE(eo_columns) TYPE REF TO zcl_excel_columns . METHODS get_columns_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_style_cond_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_data_validations_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_data_validations_size RETURNING VALUE(ep_size) TYPE i . @@ -367,7 +373,7 @@ CLASS zcl_excel_worksheet DEFINITION RETURNING VALUE(eo_column) TYPE REF TO zcl_excel_column RAISING - zcx_excel. + zcx_excel . METHODS get_default_excel_date_format RETURNING VALUE(ep_default_excel_date_format) TYPE zexcel_number_format . @@ -392,12 +398,12 @@ CLASS zcl_excel_worksheet DEFINITION VALUE(r_drawings) TYPE REF TO zcl_excel_drawings . METHODS get_comments_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_drawings_iterator IMPORTING !ip_type TYPE zexcel_drawing_type RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_freeze_cell EXPORTING !ep_row TYPE zexcel_cell_row @@ -417,13 +423,13 @@ CLASS zcl_excel_worksheet DEFINITION zcx_excel . METHODS get_hyperlinks_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_hyperlinks_size RETURNING VALUE(ep_size) TYPE i . METHODS get_ignored_errors RETURNING - VALUE(rt_ignored_errors) TYPE mty_th_ignored_errors. + VALUE(rt_ignored_errors) TYPE mty_th_ignored_errors . METHODS get_merge RETURNING VALUE(merge_range) TYPE string_table @@ -436,7 +442,7 @@ CLASS zcl_excel_worksheet DEFINITION zcx_excel . METHODS get_ranges_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_row IMPORTING !ip_row TYPE int4 @@ -447,7 +453,7 @@ CLASS zcl_excel_worksheet DEFINITION VALUE(eo_rows) TYPE REF TO zcl_excel_rows . METHODS get_rows_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_row_outlines RETURNING VALUE(rt_row_outlines) TYPE mty_ts_outlines_row . @@ -461,7 +467,7 @@ CLASS zcl_excel_worksheet DEFINITION VALUE(ev_tabcolor) TYPE zexcel_s_tabcolor . METHODS get_tables_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS get_tables_size RETURNING VALUE(ep_size) TYPE i . @@ -520,16 +526,16 @@ CLASS zcl_excel_worksheet DEFINITION zcx_excel . METHODS set_ignored_errors IMPORTING - it_ignored_errors TYPE mty_th_ignored_errors. + !it_ignored_errors TYPE mty_th_ignored_errors . METHODS set_merge IMPORTING !ip_column_start TYPE simple DEFAULT zcl_excel_common=>c_excel_sheet_min_col !ip_column_end TYPE simple DEFAULT zcl_excel_common=>c_excel_sheet_max_col !ip_row TYPE zexcel_cell_row DEFAULT zcl_excel_common=>c_excel_sheet_min_row !ip_row_to TYPE zexcel_cell_row DEFAULT zcl_excel_common=>c_excel_sheet_max_row - !ip_style TYPE zexcel_cell_style OPTIONAL "added parameter - !ip_value TYPE simple OPTIONAL "added parameter - !ip_formula TYPE zexcel_cell_formula OPTIONAL "added parameter + !ip_style TYPE zexcel_cell_style OPTIONAL "added parameter + !ip_value TYPE simple OPTIONAL "added parameter + !ip_formula TYPE zexcel_cell_formula OPTIONAL "added parameter RAISING zcx_excel . METHODS set_print_gridlines @@ -662,7 +668,7 @@ CLASS zcl_excel_worksheet DEFINITION DATA freeze_pane_cell_column TYPE zexcel_cell_column . DATA freeze_pane_cell_row TYPE zexcel_cell_row . DATA guid TYPE sysuuid_x16 . - DATA hyperlinks TYPE REF TO cl_object_collection . + DATA hyperlinks TYPE REF TO zcl_excel_collection . DATA lower_cell TYPE zexcel_s_cell_data . DATA mo_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks . DATA mt_row_outlines TYPE mty_ts_outlines_row . @@ -672,7 +678,7 @@ CLASS zcl_excel_worksheet DEFINITION DATA print_title_row_to TYPE zexcel_cell_row . DATA ranges TYPE REF TO zcl_excel_ranges . DATA rows TYPE REF TO zcl_excel_rows . - DATA tables TYPE REF TO cl_object_collection . + DATA tables TYPE REF TO zcl_excel_collection . DATA title TYPE zexcel_sheet_title VALUE 'Worksheet'. "#EC NOTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . " . DATA upper_cell TYPE zexcel_s_cell_data . DATA mt_ignored_errors TYPE mty_th_ignored_errors. @@ -897,7 +903,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. lt_columns TYPE zexcel_t_fieldcatalog, lv_maxcol TYPE i, lv_maxrow TYPE i, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_style_cond TYPE REF TO zcl_excel_style_cond, lo_curtable TYPE REF TO zcl_excel_table. DATA: ls_column_formula TYPE mty_s_column_formula, @@ -1348,7 +1354,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. END OF t_auto_size. TYPES: tt_auto_size TYPE TABLE OF t_auto_size. - DATA: lo_column_iterator TYPE REF TO cl_object_collection_iterator, + DATA: lo_column_iterator TYPE REF TO zcl_excel_collection_iterator, lo_column TYPE REF TO zcl_excel_column. DATA: auto_size TYPE flag. @@ -1855,7 +1861,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD check_rtf. DATA: lo_style TYPE REF TO zcl_excel_style, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lv_next_rtf_offset TYPE i, lv_tabix TYPE i, lv_value TYPE string, @@ -2045,7 +2051,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD generate_title. - DATA: lo_worksheets_iterator TYPE REF TO cl_object_collection_iterator, + DATA: lo_worksheets_iterator TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet. DATA: t_titles TYPE HASHED TABLE OF zexcel_sheet_title WITH UNIQUE KEY table_line, @@ -2110,7 +2116,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDIF. " Addition to solve issue #120, contribution by Stefan Schmöcker - DATA: style_iterator TYPE REF TO cl_object_collection_iterator, + DATA: style_iterator TYPE REF TO zcl_excel_collection_iterator, style TYPE REF TO zcl_excel_style. IF ep_style IS SUPPLIED. CLEAR ep_style. @@ -2171,7 +2177,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD get_comments. DATA: lo_comment TYPE REF TO zcl_excel_comment, - lo_iterator TYPE REF TO cl_object_collection_iterator. + lo_iterator TYPE REF TO zcl_excel_collection_iterator. CREATE OBJECT r_comments. @@ -2304,7 +2310,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD get_drawings. DATA: lo_drawing TYPE REF TO zcl_excel_drawing, - lo_iterator TYPE REF TO cl_object_collection_iterator. + lo_iterator TYPE REF TO zcl_excel_collection_iterator. CASE ip_type. WHEN zcl_excel_drawing=>type_image. @@ -2558,7 +2564,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD get_style_cond. - DATA: lo_style_iterator TYPE REF TO cl_object_collection_iterator, + DATA: lo_style_iterator TYPE REF TO zcl_excel_collection_iterator, lo_style_cond TYPE REF TO zcl_excel_style_cond. lo_style_iterator = me->get_style_cond_iterator( ). @@ -2882,7 +2888,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. *--------------------------------------------------------------------* - DATA: lo_range_iterator TYPE REF TO cl_object_collection_iterator, + DATA: lo_range_iterator TYPE REF TO zcl_excel_collection_iterator, lo_range TYPE REF TO zcl_excel_range, lv_repeat_range_sheetname TYPE string, lv_repeat_range_col TYPE string, @@ -3874,12 +3880,12 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. * - Stefan Schmoecker, 2012-12-02 * changes: added additional check for ' as first character *--------------------------------------------------------------------* - DATA: lo_worksheets_iterator TYPE REF TO cl_object_collection_iterator, + DATA: lo_worksheets_iterator TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, errormessage TYPE string, lv_rangesheetname_old TYPE string, lv_rangesheetname_new TYPE string, - lo_ranges_iterator TYPE REF TO cl_object_collection_iterator, + lo_ranges_iterator TYPE REF TO zcl_excel_collection_iterator, lo_range TYPE REF TO zcl_excel_range, lv_range_value TYPE zexcel_range_value, lv_errormessage TYPE string. " Can't pass '...'(abc) to exception-class diff --git a/src/zcl_excel_worksheets.clas.abap b/src/zcl_excel_worksheets.clas.abap index d5bb471..1c48498 100644 --- a/src/zcl_excel_worksheets.clas.abap +++ b/src/zcl_excel_worksheets.clas.abap @@ -22,7 +22,7 @@ CLASS zcl_excel_worksheets DEFINITION VALUE(eo_worksheet) TYPE REF TO zcl_excel_worksheet . METHODS get_iterator RETURNING - VALUE(eo_iterator) TYPE REF TO cl_object_collection_iterator . + VALUE(eo_iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS is_empty RETURNING VALUE(is_empty) TYPE flag . @@ -39,7 +39,7 @@ CLASS zcl_excel_worksheets DEFINITION *"* do not include other source files here!!! PRIVATE SECTION. - DATA worksheets TYPE REF TO cl_object_collection . + DATA worksheets TYPE REF TO zcl_excel_collection . ENDCLASS. diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index 417bd2b..47fe358 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -267,10 +267,6 @@ ENDCLASS. CLASS zcl_excel_writer_2007 IMPLEMENTATION. - METHOD constructor. - me->ixml = cl_ixml=>create( ). - ENDMETHOD. - METHOD add_1_val_child_node. @@ -292,6 +288,11 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ENDMETHOD. + METHOD constructor. + me->ixml = cl_ixml=>create( ). + ENDMETHOD. + + METHOD create. * Office 2007 file format is a cab of several xml files with extension .xlsx @@ -299,8 +300,8 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. DATA: lo_zip TYPE REF TO cl_abap_zip, lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, + lo_nested_iterator TYPE REF TO zcl_excel_collection_iterator, lo_table TYPE REF TO zcl_excel_table, lo_drawing TYPE REF TO zcl_excel_drawing, lo_drawings TYPE REF TO zcl_excel_drawings, @@ -602,8 +603,8 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_element_root TYPE REF TO if_ixml_element, lo_element TYPE REF TO if_ixml_element, lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, + lo_nested_iterator TYPE REF TO zcl_excel_collection_iterator, lo_table TYPE REF TO zcl_excel_table. DATA: lv_worksheets_num TYPE i, @@ -884,7 +885,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_sub_element_variant TYPE REF TO if_ixml_element, lo_sub_element_lpstr TYPE REF TO if_ixml_element, lo_sub_element_i4 TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet. DATA: lv_value TYPE string. @@ -2347,7 +2348,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. * lo_element_charset TYPE REF TO if_ixml_element, lo_element_family TYPE REF TO if_ixml_element, lo_element_t TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_comments TYPE REF TO zcl_excel_comments, lo_comment TYPE REF TO zcl_excel_comment. DATA: lv_rel_id TYPE i, @@ -2448,7 +2449,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. DATA: lo_document TYPE REF TO if_ixml_document, lo_element_root TYPE REF TO if_ixml_element, lo_element_cellanchor TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_drawings TYPE REF TO zcl_excel_drawings, lo_drawing TYPE REF TO zcl_excel_drawing. DATA: lv_rel_id TYPE i. @@ -2510,8 +2511,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_drawing TYPE REF TO zcl_excel_drawing, + DATA: lo_drawing TYPE REF TO zcl_excel_drawing, lo_document TYPE REF TO if_ixml_document, lo_element_root TYPE REF TO if_ixml_element, lo_element TYPE REF TO if_ixml_element, @@ -2595,7 +2595,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. DATA: lo_document TYPE REF TO if_ixml_document, lo_element_root TYPE REF TO if_ixml_element, lo_element TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_drawings TYPE REF TO zcl_excel_drawings, lo_drawing TYPE REF TO zcl_excel_drawing. @@ -2714,7 +2714,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, + DATA: lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_drawing TYPE REF TO zcl_excel_drawing, lo_document TYPE REF TO if_ixml_document, lo_element_root TYPE REF TO if_ixml_element, @@ -3156,7 +3156,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_element_autofill TYPE REF TO if_ixml_element, lo_element_row TYPE REF TO if_ixml_element, lo_element_column TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_comments TYPE REF TO zcl_excel_comments, lo_comment TYPE REF TO zcl_excel_comment, lv_row TYPE zexcel_cell_row, @@ -3560,7 +3560,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_sub_element TYPE REF TO if_ixml_element, lo_sub2_element TYPE REF TO if_ixml_element, lo_font_element TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet. DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, @@ -3893,7 +3893,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_element_2 TYPE REF TO if_ixml_element, lo_element_3 TYPE REF TO if_ixml_element, lo_element_4 TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_style_cond TYPE REF TO zcl_excel_style_cond, lo_data_validation TYPE REF TO zcl_excel_data_validation, lo_table TYPE REF TO zcl_excel_table, @@ -3924,9 +3924,9 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lv_freeze_cell_row TYPE zexcel_cell_row, lv_freeze_cell_column TYPE zexcel_cell_column, lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - lo_column_iterator TYPE REF TO cl_object_collection_iterator, + lo_column_iterator TYPE REF TO zcl_excel_collection_iterator, lo_column TYPE REF TO zcl_excel_column, - lo_row_iterator TYPE REF TO cl_object_collection_iterator, + lo_row_iterator TYPE REF TO zcl_excel_collection_iterator, ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, lv_relation_id TYPE i VALUE 0, outline_level_col TYPE i VALUE 0, @@ -5476,73 +5476,6 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ENDMETHOD. - METHOD create_xl_sheet_ignored_errors. - DATA: lo_element TYPE REF TO if_ixml_element, - lo_element2 TYPE REF TO if_ixml_element, - lt_ignored_errors TYPE zcl_excel_worksheet=>mty_th_ignored_errors. - FIELD-SYMBOLS: TYPE zcl_excel_worksheet=>mty_s_ignored_errors. - - lt_ignored_errors = io_worksheet->get_ignored_errors( ). - - IF lt_ignored_errors IS NOT INITIAL. - lo_element = io_document->create_simple_element( name = 'ignoredErrors' - parent = io_document ). - - - LOOP AT lt_ignored_errors ASSIGNING . - - lo_element2 = io_document->create_simple_element( name = 'ignoredError' - parent = io_document ). - - lo_element2->set_attribute_ns( name = 'sqref' - value = -cell_coords ). - - IF -eval_error = abap_true. - lo_element2->set_attribute_ns( name = 'evalError' - value = '1' ). - ENDIF. - IF -two_digit_text_year = abap_true. - lo_element2->set_attribute_ns( name = 'twoDigitTextYear' - value = '1' ). - ENDIF. - IF -number_stored_as_text = abap_true. - lo_element2->set_attribute_ns( name = 'numberStoredAsText' - value = '1' ). - ENDIF. - IF -formula = abap_true. - lo_element2->set_attribute_ns( name = 'formula' - value = '1' ). - ENDIF. - IF -formula_range = abap_true. - lo_element2->set_attribute_ns( name = 'formulaRange' - value = '1' ). - ENDIF. - IF -unlocked_formula = abap_true. - lo_element2->set_attribute_ns( name = 'unlockedFormula' - value = '1' ). - ENDIF. - IF -empty_cell_reference = abap_true. - lo_element2->set_attribute_ns( name = 'emptyCellReference' - value = '1' ). - ENDIF. - IF -list_data_validation = abap_true. - lo_element2->set_attribute_ns( name = 'listDataValidation' - value = '1' ). - ENDIF. - IF -calculated_column = abap_true. - lo_element2->set_attribute_ns( name = 'calculatedColumn' - value = '1' ). - ENDIF. - - lo_element->append_child( lo_element2 ). - - ENDLOOP. - - io_element_root->append_child( lo_element ). - - ENDIF. - - ENDMETHOD. METHOD create_xl_sheet_column_formula. TYPES: ls_column_formula_used TYPE mty_column_formula_used, @@ -5620,6 +5553,75 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ENDMETHOD. + METHOD create_xl_sheet_ignored_errors. + DATA: lo_element TYPE REF TO if_ixml_element, + lo_element2 TYPE REF TO if_ixml_element, + lt_ignored_errors TYPE zcl_excel_worksheet=>mty_th_ignored_errors. + FIELD-SYMBOLS: TYPE zcl_excel_worksheet=>mty_s_ignored_errors. + + lt_ignored_errors = io_worksheet->get_ignored_errors( ). + + IF lt_ignored_errors IS NOT INITIAL. + lo_element = io_document->create_simple_element( name = 'ignoredErrors' + parent = io_document ). + + + LOOP AT lt_ignored_errors ASSIGNING . + + lo_element2 = io_document->create_simple_element( name = 'ignoredError' + parent = io_document ). + + lo_element2->set_attribute_ns( name = 'sqref' + value = -cell_coords ). + + IF -eval_error = abap_true. + lo_element2->set_attribute_ns( name = 'evalError' + value = '1' ). + ENDIF. + IF -two_digit_text_year = abap_true. + lo_element2->set_attribute_ns( name = 'twoDigitTextYear' + value = '1' ). + ENDIF. + IF -number_stored_as_text = abap_true. + lo_element2->set_attribute_ns( name = 'numberStoredAsText' + value = '1' ). + ENDIF. + IF -formula = abap_true. + lo_element2->set_attribute_ns( name = 'formula' + value = '1' ). + ENDIF. + IF -formula_range = abap_true. + lo_element2->set_attribute_ns( name = 'formulaRange' + value = '1' ). + ENDIF. + IF -unlocked_formula = abap_true. + lo_element2->set_attribute_ns( name = 'unlockedFormula' + value = '1' ). + ENDIF. + IF -empty_cell_reference = abap_true. + lo_element2->set_attribute_ns( name = 'emptyCellReference' + value = '1' ). + ENDIF. + IF -list_data_validation = abap_true. + lo_element2->set_attribute_ns( name = 'listDataValidation' + value = '1' ). + ENDIF. + IF -calculated_column = abap_true. + lo_element2->set_attribute_ns( name = 'calculatedColumn' + value = '1' ). + ENDIF. + + lo_element->append_child( lo_element2 ). + + ENDLOOP. + + io_element_root->append_child( lo_element ). + + ENDIF. + + ENDMETHOD. + + METHOD create_xl_sheet_pagebreaks. DATA: lo_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks, lt_pagebreaks TYPE zcl_excel_worksheet_pagebreaks=>tt_pagebreak_at, @@ -5722,7 +5724,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. DATA: lo_document TYPE REF TO if_ixml_document, lo_element_root TYPE REF TO if_ixml_element, lo_element TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_table TYPE REF TO zcl_excel_table, lo_link TYPE REF TO zcl_excel_hyperlink. @@ -5967,7 +5969,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ls_values TYPE zexcel_s_autofilter_values, ls_area TYPE zexcel_s_autofilter_area, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_table TYPE REF TO zcl_excel_table, lt_table_areas TYPE SORTED TABLE OF lty_table_area WITH NON-UNIQUE KEY left right top bottom, ls_table_area LIKE LINE OF lt_table_areas, @@ -5980,7 +5982,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lv_last_row TYPE i, * lts_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - lo_row_iterator TYPE REF TO cl_object_collection_iterator, + lo_row_iterator TYPE REF TO zcl_excel_collection_iterator, lo_row TYPE REF TO zcl_excel_row, lo_row_empty TYPE REF TO zcl_excel_row, lts_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, @@ -6435,8 +6437,8 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_element TYPE REF TO if_ixml_element, lo_sub_element TYPE REF TO if_ixml_element, lo_sub_element_2 TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator2 TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, + lo_iterator2 TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_style_cond TYPE REF TO zcl_excel_style_cond, lo_style TYPE REF TO zcl_excel_style. @@ -7641,8 +7643,8 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_element TYPE REF TO if_ixml_element, lo_element_range TYPE REF TO if_ixml_element, lo_sub_element TYPE REF TO if_ixml_element, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_iterator_range TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, + lo_iterator_range TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_range TYPE REF TO zcl_excel_range, lo_autofilters TYPE REF TO zcl_excel_autofilters, @@ -7889,6 +7891,16 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ENDMETHOD. + METHOD create_xml_document. + DATA lo_encoding TYPE REF TO if_ixml_encoding. + lo_encoding = me->ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian + character_set = 'utf-8' ). + ro_document = me->ixml->create_document( ). + ro_document->set_encoding( lo_encoding ). + ro_document->set_standalone( abap_true ). + ENDMETHOD. + + METHOD flag2bool. @@ -7920,6 +7932,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ENDMETHOD. + METHOD is_formula_shareable. DATA: lv_test_shared TYPE string. @@ -7935,6 +7948,74 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ENDIF. ENDMETHOD. + + METHOD render_xml_document. + DATA lo_streamfactory TYPE REF TO if_ixml_stream_factory. + DATA lo_ostream TYPE REF TO if_ixml_ostream. + DATA lo_renderer TYPE REF TO if_ixml_renderer. + DATA lv_string TYPE string. + + " So that the rendering of io_document to a XML text in UTF-8 XSTRING works for all Unicode characters (Chinese, + " emoticons, etc.) the method CREATE_OSTREAM_CSTRING must be used instead of CREATE_OSTREAM_XSTRING as explained + " in note 2922674 below (original there: https://launchpad.support.sap.com/#/notes/2922674), and then the STRING + " variable can be converted into UTF-8. + " + " Excerpt from Note 2922674 - Support for Unicode Characters U+10000 to U+10FFFF in the iXML kernel library / ABAP package SIXML. + " + " You are running a unicode system with SAP Netweaver / SAP_BASIS release equal or lower than 7.51. + " + " Some functions in the iXML kernel library / ABAP package SIXML does not fully or incorrectly support unicode + " characters of the supplementary planes. This is caused by using UCS-2 in codepage conversion functions. + " Therefore, when reading from iXML input steams, the characters from the supplementary planes, that are not + " supported by UCS-2, might be replaced by the character #. When writing to iXML output streams, UTF-16 surrogate + " pairs, representing characters from the supplementary planes, might be incorrectly encoded in UTF-8. + " + " The characters incorrectly encoded in UTF-8, might be accepted as input for the iXML parser or external parsers, + " but might also be rejected. + " + " Support for unicode characters of the supplementary planes was introduced for SAP_BASIS 7.51 or lower with note + " 2220720, but later withdrawn with note 2346627 for functional issues. + " + " Characters of the supplementary planes are supported with ABAP Platform 1709 / SAP_BASIS 7.52 and higher. + " + " Please note, that the iXML runtime behaves like the ABAP runtime concerning the handling of unicode characters of + " the supplementary planes. In iXML and ABAP, these characters have length 2 (as returned by ABAP build-in function + " STRLEN), and string processing functions like SUBSTRING might split these characters into 2 invalid characters + " with length 1. These invalid characters are commonly referred to as broken surrogate pairs. + " + " A workaround for the incorrect UTF-8 encoding in SAP_BASIS 7.51 or lower is to render the document to an ABAP + " variable with type STRING using a output stream created with factory method IF_IXML_STREAM_FACTORY=>CREATE_OSTREAM_CSTRING + " and then to convert the STRING variable to UTF-8 using method CL_ABAP_CODEPAGE=>CONVERT_TO. + + " 1) RENDER TO XML STRING + lo_streamfactory = me->ixml->create_stream_factory( ). + lo_ostream = lo_streamfactory->create_ostream_cstring( string = lv_string ). + lo_renderer = me->ixml->create_renderer( ostream = lo_ostream document = io_document ). + lo_renderer->render( ). + + " 2) CONVERT IT TO UTF-8 + "----------------- + " The beginning of the XML string has these 57 characters: + " X + " (where "X" is the special character corresponding to the utf-16 BOM, hexadecimal FFFE or FEFF, + " but there's no "X" in non-Unicode SAP systems) + " The encoding must be removed otherwise Excel would fail to decode correctly the UTF-8 XML. + " For a better performance, it's assumed that "encoding" is in the first 100 characters. + IF strlen( lv_string ) < 100. + REPLACE REGEX 'encoding="[^"]+"' IN lv_string WITH ``. + ELSE. + REPLACE REGEX 'encoding="[^"]+"' IN SECTION LENGTH 100 OF lv_string WITH ``. + ENDIF. + " Convert XML text to UTF-8 (NB: if 2 first bytes are the UTF-16 BOM, they are converted into 3 bytes of UTF-8 BOM) + ep_content = cl_abap_codepage=>convert_to( source = lv_string ). + " Add the UTF-8 Byte Order Mark if missing (NB: that serves as substitute of "encoding") + IF xstrlen( ep_content ) >= 3 AND ep_content(3) <> cl_abap_char_utilities=>byte_order_mark_utf8. + CONCATENATE cl_abap_char_utilities=>byte_order_mark_utf8 ep_content INTO ep_content IN BYTE MODE. + ENDIF. + + ENDMETHOD. + + METHOD set_vml_shape_footer. CONSTANTS: lc_shape TYPE string VALUE '', @@ -8157,7 +8238,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ld_7 TYPE string, lv_relation_id TYPE i, - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, ls_odd_header TYPE zexcel_s_worksheet_head_foot, ls_odd_footer TYPE zexcel_s_worksheet_head_foot, @@ -8218,86 +8299,10 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ENDMETHOD. - METHOD create_xml_document. - DATA lo_encoding TYPE REF TO if_ixml_encoding. - lo_encoding = me->ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - ro_document = me->ixml->create_document( ). - ro_document->set_encoding( lo_encoding ). - ro_document->set_standalone( abap_true ). - ENDMETHOD. - - METHOD render_xml_document. - DATA lo_streamfactory TYPE REF TO if_ixml_stream_factory. - DATA lo_ostream TYPE REF TO if_ixml_ostream. - DATA lo_renderer TYPE REF TO if_ixml_renderer. - DATA lv_string TYPE string. - - " So that the rendering of io_document to a XML text in UTF-8 XSTRING works for all Unicode characters (Chinese, - " emoticons, etc.) the method CREATE_OSTREAM_CSTRING must be used instead of CREATE_OSTREAM_XSTRING as explained - " in note 2922674 below (original there: https://launchpad.support.sap.com/#/notes/2922674), and then the STRING - " variable can be converted into UTF-8. - " - " Excerpt from Note 2922674 - Support for Unicode Characters U+10000 to U+10FFFF in the iXML kernel library / ABAP package SIXML. - " - " You are running a unicode system with SAP Netweaver / SAP_BASIS release equal or lower than 7.51. - " - " Some functions in the iXML kernel library / ABAP package SIXML does not fully or incorrectly support unicode - " characters of the supplementary planes. This is caused by using UCS-2 in codepage conversion functions. - " Therefore, when reading from iXML input steams, the characters from the supplementary planes, that are not - " supported by UCS-2, might be replaced by the character #. When writing to iXML output streams, UTF-16 surrogate - " pairs, representing characters from the supplementary planes, might be incorrectly encoded in UTF-8. - " - " The characters incorrectly encoded in UTF-8, might be accepted as input for the iXML parser or external parsers, - " but might also be rejected. - " - " Support for unicode characters of the supplementary planes was introduced for SAP_BASIS 7.51 or lower with note - " 2220720, but later withdrawn with note 2346627 for functional issues. - " - " Characters of the supplementary planes are supported with ABAP Platform 1709 / SAP_BASIS 7.52 and higher. - " - " Please note, that the iXML runtime behaves like the ABAP runtime concerning the handling of unicode characters of - " the supplementary planes. In iXML and ABAP, these characters have length 2 (as returned by ABAP build-in function - " STRLEN), and string processing functions like SUBSTRING might split these characters into 2 invalid characters - " with length 1. These invalid characters are commonly referred to as broken surrogate pairs. - " - " A workaround for the incorrect UTF-8 encoding in SAP_BASIS 7.51 or lower is to render the document to an ABAP - " variable with type STRING using a output stream created with factory method IF_IXML_STREAM_FACTORY=>CREATE_OSTREAM_CSTRING - " and then to convert the STRING variable to UTF-8 using method CL_ABAP_CODEPAGE=>CONVERT_TO. - - " 1) RENDER TO XML STRING - lo_streamfactory = me->ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_cstring( string = lv_string ). - lo_renderer = me->ixml->create_renderer( ostream = lo_ostream document = io_document ). - lo_renderer->render( ). - - " 2) CONVERT IT TO UTF-8 - "----------------- - " The beginning of the XML string has these 57 characters: - " X - " (where "X" is the special character corresponding to the utf-16 BOM, hexadecimal FFFE or FEFF, - " but there's no "X" in non-Unicode SAP systems) - " The encoding must be removed otherwise Excel would fail to decode correctly the UTF-8 XML. - " For a better performance, it's assumed that "encoding" is in the first 100 characters. - IF strlen( lv_string ) < 100. - REPLACE REGEX 'encoding="[^"]+"' IN lv_string WITH ``. - ELSE. - REPLACE REGEX 'encoding="[^"]+"' IN SECTION LENGTH 100 OF lv_string WITH ``. - ENDIF. - " Convert XML text to UTF-8 (NB: if 2 first bytes are the UTF-16 BOM, they are converted into 3 bytes of UTF-8 BOM) - ep_content = cl_abap_codepage=>convert_to( source = lv_string ). - " Add the UTF-8 Byte Order Mark if missing (NB: that serves as substitute of "encoding") - IF xstrlen( ep_content ) >= 3 AND ep_content(3) <> cl_abap_char_utilities=>byte_order_mark_utf8. - CONCATENATE cl_abap_char_utilities=>byte_order_mark_utf8 ep_content INTO ep_content IN BYTE MODE. - ENDIF. - - ENDMETHOD. - METHOD zif_excel_writer~write_file. me->excel = io_excel. ep_file = me->create( ). ENDMETHOD. - ENDCLASS. diff --git a/src/zcl_excel_writer_csv.clas.abap b/src/zcl_excel_writer_csv.clas.abap index dbab77d..2b2c7c3 100644 --- a/src/zcl_excel_writer_csv.clas.abap +++ b/src/zcl_excel_writer_csv.clas.abap @@ -77,7 +77,7 @@ CLASS zcl_excel_writer_csv IMPLEMENTATION. lv_tmp TYPE string, lv_time TYPE c LENGTH 8. - DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, + DATA: lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet. DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted, diff --git a/src/zcl_excel_writer_huge_file.clas.abap b/src/zcl_excel_writer_huge_file.clas.abap index 43486fe..a76ec2b 100644 --- a/src/zcl_excel_writer_huge_file.clas.abap +++ b/src/zcl_excel_writer_huge_file.clas.abap @@ -55,7 +55,7 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION. lv_invalid TYPE string. DATA: - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet. DATA: @@ -279,7 +279,7 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION. * Local data * DATA: - lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, lo_table TYPE REF TO zcl_excel_table, lo_column_default TYPE REF TO zcl_excel_column, lo_row_default TYPE REF TO zcl_excel_row, @@ -293,9 +293,9 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION. lv_freeze_cell_row TYPE zexcel_cell_row, lv_freeze_cell_column TYPE zexcel_cell_column, lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - lo_column_iterator TYPE REF TO cl_object_collection_iterator, + lo_column_iterator TYPE REF TO zcl_excel_collection_iterator, lo_column TYPE REF TO zcl_excel_column, - lo_row_iterator TYPE REF TO cl_object_collection_iterator, + lo_row_iterator TYPE REF TO zcl_excel_collection_iterator, lo_row TYPE REF TO zcl_excel_row, lv_relation_id TYPE i VALUE 0, outline_level_row TYPE i VALUE 0, diff --git a/src/zcl_excel_writer_xlsm.clas.abap b/src/zcl_excel_writer_xlsm.clas.abap index c275e24..fb78d81 100644 --- a/src/zcl_excel_writer_xlsm.clas.abap +++ b/src/zcl_excel_writer_xlsm.clas.abap @@ -53,8 +53,8 @@ CLASS zcl_excel_writer_xlsm IMPLEMENTATION. DATA: lo_zip TYPE REF TO cl_abap_zip, lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_active_worksheet TYPE REF TO zcl_excel_worksheet, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_nested_iterator TYPE REF TO cl_object_collection_iterator, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, + lo_nested_iterator TYPE REF TO zcl_excel_collection_iterator, lo_table TYPE REF TO zcl_excel_table, lo_drawing TYPE REF TO zcl_excel_drawing, lo_drawings TYPE REF TO zcl_excel_drawings.