From 11ab392189d58b82df6b81feb4724edced6d830f Mon Sep 17 00:00:00 2001 From: sandraros Date: Sun, 8 May 2022 18:24:53 +0000 Subject: [PATCH] new version of PR 1015 (sz3lbi:clone) Fixes for: - tables - named ranges - total functions - autofilter - graphs - not all worksheet properties cloned --- src/zcl_excel.clas.abap | 33 ++++ src/zcl_excel_base.clas.abap | 24 +++ src/zcl_excel_base.clas.xml | 16 ++ src/zcl_excel_collection.clas.abap | 30 ++- src/zcl_excel_column.clas.abap | 31 ++- src/zcl_excel_columns.clas.abap | 19 +- src/zcl_excel_comment.clas.abap | 20 +- src/zcl_excel_comments.clas.abap | 17 +- src/zcl_excel_data_validation.clas.abap | 33 +++- src/zcl_excel_data_validations.clas.abap | 17 +- src/zcl_excel_drawing.clas.abap | 44 ++++- src/zcl_excel_drawings.clas.abap | 24 ++- src/zcl_excel_graph.clas.abap | 37 +++- src/zcl_excel_graph_bars.clas.abap | 36 ++++ src/zcl_excel_graph_line.clas.abap | 35 ++++ src/zcl_excel_graph_pie.clas.abap | 37 +++- src/zcl_excel_hyperlink.clas.abap | 20 +- src/zcl_excel_range.clas.abap | 56 +++++- src/zcl_excel_ranges.clas.abap | 16 +- src/zcl_excel_row.clas.abap | 23 ++- src/zcl_excel_rows.clas.abap | 18 +- src/zcl_excel_sheet_setup.clas.abap | 48 ++++- src/zcl_excel_style.clas.abap | 12 +- src/zcl_excel_style_cond.clas.abap | 27 ++- src/zcl_excel_styles.clas.abap | 16 +- src/zcl_excel_styles_cond.clas.abap | 16 +- src/zcl_excel_table.clas.abap | 19 +- src/zcl_excel_worksheet.clas.abap | 198 ++++++++++++++++++- src/zcl_excel_worksheet_pagebreaks.clas.abap | 15 +- src/zcl_excel_worksheets.clas.abap | 19 +- 30 files changed, 924 insertions(+), 32 deletions(-) create mode 100644 src/zcl_excel_base.clas.abap create mode 100644 src/zcl_excel_base.clas.xml diff --git a/src/zcl_excel.clas.abap b/src/zcl_excel.clas.abap index dfc9e56..b976733 100644 --- a/src/zcl_excel.clas.abap +++ b/src/zcl_excel.clas.abap @@ -48,6 +48,14 @@ CLASS zcl_excel DEFINITION VALUE(eo_worksheet) TYPE REF TO zcl_excel_worksheet RAISING zcx_excel . + METHODS clone_worksheet + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + !ip_title TYPE zexcel_sheet_title OPTIONAL + RETURNING + VALUE(ro_worksheet) TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel. METHODS add_static_styles . METHODS constructor . METHODS delete_worksheet @@ -263,6 +271,31 @@ CLASS zcl_excel IMPLEMENTATION. ENDMETHOD. + METHOD clone_worksheet. + DATA lo_worksheet_clone TYPE REF TO zcl_excel_worksheet. + DATA lo_autofilter TYPE REF TO zcl_excel_autofilter. + DATA lo_new_autofilter TYPE REF TO zcl_excel_autofilter. + + lo_worksheet_clone ?= io_worksheet->clone( ). + + IF ip_title IS NOT INITIAL. + lo_worksheet_clone->set_title( ip_title ). + ENDIF. + + lo_autofilter = autofilters->get( io_worksheet ). + IF lo_autofilter IS BOUND. + lo_new_autofilter = autofilters->add( lo_worksheet_clone ). + lo_new_autofilter->set_filter_area( lo_autofilter->get_filter_area( ) ). + lo_new_autofilter->set_values( lo_autofilter->get_values( ) ). + ENDIF. + + worksheets->add( lo_worksheet_clone ). + worksheets->active_worksheet = worksheets->size( ). + + ro_worksheet = lo_worksheet_clone. + ENDMETHOD. + + METHOD add_static_styles. " # issue 139 FIELD-SYMBOLS: LIKE LINE OF t_stylemapping1, diff --git a/src/zcl_excel_base.clas.abap b/src/zcl_excel_base.clas.abap new file mode 100644 index 0000000..e9e5fa6 --- /dev/null +++ b/src/zcl_excel_base.clas.abap @@ -0,0 +1,24 @@ +"!

Base class for Excel components and groups of components

+CLASS zcl_excel_base DEFINITION + PUBLIC + ABSTRACT + CREATE PROTECTED. + + PUBLIC SECTION. + + METHODS clone + ABSTRACT + RETURNING + VALUE(ro_object) TYPE REF TO zcl_excel_base + RAISING + zcx_excel. + + PROTECTED SECTION. + PRIVATE SECTION. + +ENDCLASS. + + + +CLASS zcl_excel_base IMPLEMENTATION. +ENDCLASS. diff --git a/src/zcl_excel_base.clas.xml b/src/zcl_excel_base.clas.xml new file mode 100644 index 0000000..b96af2d --- /dev/null +++ b/src/zcl_excel_base.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_EXCEL_BASE + E + Base class for Excel components and groups of components + 1 + X + X + X + + + + diff --git a/src/zcl_excel_collection.clas.abap b/src/zcl_excel_collection.clas.abap index 48ff6b8..cd46bf3 100644 --- a/src/zcl_excel_collection.clas.abap +++ b/src/zcl_excel_collection.clas.abap @@ -1,12 +1,13 @@ CLASS zcl_excel_collection DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. TYPES: - ty_collection TYPE STANDARD TABLE OF REF TO object . + ty_collection TYPE STANDARD TABLE OF REF TO zcl_excel_base. DATA collection TYPE ty_collection READ-ONLY . @@ -20,24 +21,25 @@ CLASS zcl_excel_collection DEFINITION IMPORTING !index TYPE i RETURNING - VALUE(object) TYPE REF TO object . + VALUE(object) TYPE REF TO zcl_excel_base. METHODS get_iterator RETURNING VALUE(iterator) TYPE REF TO zcl_excel_collection_iterator . METHODS add IMPORTING - !element TYPE REF TO object . + !element TYPE REF TO zcl_excel_base. METHODS remove IMPORTING - !element TYPE REF TO object . + !element TYPE REF TO zcl_excel_base. METHODS clear . + METHODS clone REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. -CLASS zcl_excel_collection IMPLEMENTATION. +CLASS ZCL_EXCEL_COLLECTION IMPLEMENTATION. METHOD add . @@ -50,6 +52,22 @@ CLASS zcl_excel_collection IMPLEMENTATION. ENDMETHOD. + METHOD clone. + DATA lo_excel_collection TYPE REF TO zcl_excel_collection. + DATA lo_element TYPE REF TO zcl_excel_base. + DATA lo_clone TYPE REF TO zcl_excel_base. + + CREATE OBJECT lo_excel_collection. + + LOOP AT me->collection INTO lo_element. + lo_clone = lo_element->clone( ). + INSERT lo_clone INTO TABLE lo_excel_collection->collection. + ENDLOOP. + + ro_object = lo_excel_collection. + ENDMETHOD. + + METHOD get . READ TABLE collection INDEX index INTO object. ENDMETHOD. diff --git a/src/zcl_excel_column.clas.abap b/src/zcl_excel_column.clas.abap index a1d2fb6..73bd348 100644 --- a/src/zcl_excel_column.clas.abap +++ b/src/zcl_excel_column.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_column DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_COLUMN *"* do not include other source files here!!! @@ -82,6 +83,7 @@ CLASS zcl_excel_column DEFINITION VALUE(ep_style_guid) TYPE zexcel_cell_style RAISING zcx_excel . + METHODS clone REDEFINITION. *"* protected components of class ZCL_EXCEL_COLUMN *"* do not include other source files here!!! PROTECTED SECTION. @@ -107,6 +109,8 @@ CLASS zcl_excel_column IMPLEMENTATION. METHOD constructor. + super->constructor( ). + me->column_index = zcl_excel_common=>convert_column2int( ip_index ). me->width = -1. me->auto_size = abap_false. @@ -226,4 +230,29 @@ CLASS zcl_excel_column IMPLEMENTATION. me->xf_index = ip_xf_index. io_column = me. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_column TYPE REF TO zcl_excel_column. + DATA lv_index TYPE zexcel_cell_column_alpha. + + lv_index = column_index. + + CREATE OBJECT lo_excel_column + EXPORTING + ip_index = lv_index + ip_worksheet = worksheet + ip_excel = excel. + + lo_excel_column->width = width. + lo_excel_column->auto_size = auto_size. + lo_excel_column->visible = visible. + lo_excel_column->outline_level = outline_level. + lo_excel_column->collapsed = collapsed. + lo_excel_column->xf_index = xf_index. + lo_excel_column->style_guid = style_guid. + + ro_object = lo_excel_column. + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_excel_columns.clas.abap b/src/zcl_excel_columns.clas.abap index c8779c6..3908ff4 100644 --- a/src/zcl_excel_columns.clas.abap +++ b/src/zcl_excel_columns.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_columns DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_COLUMNS *"* do not include other source files here!!! @@ -28,6 +29,7 @@ CLASS zcl_excel_columns DEFINITION METHODS size RETURNING VALUE(ep_size) TYPE i . + METHODS clone REDEFINITION. *"* protected components of class ZABAP_EXCEL_WORKSHEETS *"* do not include other source files here!!! PROTECTED SECTION. @@ -69,6 +71,7 @@ CLASS zcl_excel_columns IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT columns. @@ -104,4 +107,18 @@ CLASS zcl_excel_columns IMPLEMENTATION. METHOD size. ep_size = columns->size( ). ENDMETHOD. + + + METHOD clone. + DATA lo_excel_columns TYPE REF TO zcl_excel_columns. + + CREATE OBJECT lo_excel_columns. + + lo_excel_columns->columns ?= columns->clone( ). + + lo_excel_columns->columns_hashed = columns_hashed. + + ro_object = lo_excel_columns. + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_excel_comment.clas.abap b/src/zcl_excel_comment.clas.abap index d25310e..fea83c9 100644 --- a/src/zcl_excel_comment.clas.abap +++ b/src/zcl_excel_comment.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_comment DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. @@ -22,6 +23,7 @@ CLASS zcl_excel_comment DEFINITION IMPORTING !ip_text TYPE string !ip_ref TYPE string OPTIONAL . + METHODS clone REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. @@ -36,7 +38,7 @@ CLASS zcl_excel_comment IMPLEMENTATION. METHOD constructor. - + super->constructor( ). ENDMETHOD. @@ -67,4 +69,18 @@ CLASS zcl_excel_comment IMPLEMENTATION. me->ref = ip_ref. ENDIF. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_comment TYPE REF TO zcl_excel_comment. + + CREATE OBJECT lo_excel_comment. + + lo_excel_comment->index = index. + lo_excel_comment->ref = ref. + lo_excel_comment->text = text. + + ro_object = lo_excel_comment. + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_excel_comments.clas.abap b/src/zcl_excel_comments.clas.abap index b0b897e..30e7c82 100644 --- a/src/zcl_excel_comments.clas.abap +++ b/src/zcl_excel_comments.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_comments DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. @@ -30,6 +31,7 @@ CLASS zcl_excel_comments DEFINITION METHODS size RETURNING VALUE(ep_size) TYPE i . + METHODS clone REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. @@ -57,6 +59,7 @@ CLASS zcl_excel_comments IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT comments. ENDMETHOD. @@ -97,4 +100,16 @@ CLASS zcl_excel_comments IMPLEMENTATION. ep_size = comments->size( ). ENDMETHOD. + + + METHOD clone. + DATA lo_excel_comments TYPE REF TO zcl_excel_comments. + + CREATE OBJECT lo_excel_comments. + + lo_excel_comments->comments ?= comments->clone( ). + + ro_object = lo_excel_comments. + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_excel_data_validation.clas.abap b/src/zcl_excel_data_validation.clas.abap index d826a54..798dea1 100644 --- a/src/zcl_excel_data_validation.clas.abap +++ b/src/zcl_excel_data_validation.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_data_validation DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. *"* public components of class ZCL_EXCEL_DATA_VALIDATION @@ -45,6 +46,7 @@ CLASS zcl_excel_data_validation DEFINITION DATA prompt TYPE string . METHODS constructor . + METHODS clone REDEFINITION. *"* protected components of class ZCL_EXCEL_DATA_VALIDATION *"* do not include other source files here!!! *"* protected components of class ZCL_EXCEL_DATA_VALIDATION @@ -61,6 +63,7 @@ CLASS zcl_excel_data_validation IMPLEMENTATION. METHOD constructor. + super->constructor( ). " Initialise instance variables formula1 = ''. formula2 = ''. @@ -79,4 +82,32 @@ CLASS zcl_excel_data_validation IMPLEMENTATION. cell_row = 1. cell_column = 'A'. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_data_validation TYPE REF TO zcl_excel_data_validation. + + CREATE OBJECT lo_excel_data_validation. + + lo_excel_data_validation->allowblank = allowblank. + lo_excel_data_validation->cell_column = cell_column. + lo_excel_data_validation->cell_column_to = cell_column_to. + lo_excel_data_validation->cell_row = cell_row. + lo_excel_data_validation->cell_row_to = cell_row_to. + lo_excel_data_validation->error = error. + lo_excel_data_validation->errorstyle = errorstyle. + lo_excel_data_validation->errortitle = errortitle. + lo_excel_data_validation->formula1 = formula1. + lo_excel_data_validation->formula2 = formula2. + lo_excel_data_validation->operator = operator. + lo_excel_data_validation->prompt = prompt. + lo_excel_data_validation->prompttitle = prompttitle. + lo_excel_data_validation->showdropdown = showdropdown. + lo_excel_data_validation->showerrormessage = showerrormessage. + lo_excel_data_validation->showinputmessage = showinputmessage. + lo_excel_data_validation->type = type. + + ro_object = lo_excel_data_validation. + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_excel_data_validations.clas.abap b/src/zcl_excel_data_validations.clas.abap index 2afd865..87f0c94 100644 --- a/src/zcl_excel_data_validations.clas.abap +++ b/src/zcl_excel_data_validations.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_data_validations DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_DATA_VALIDATIONS *"* do not include other source files here!!! @@ -24,6 +25,7 @@ CLASS zcl_excel_data_validations DEFINITION METHODS size RETURNING VALUE(ep_size) TYPE i . + METHODS clone REDEFINITION. *"* protected components of class ZCL_EXCEL_DATA_VALIDATIONS *"* do not include other source files here!!! PROTECTED SECTION. @@ -50,6 +52,7 @@ CLASS zcl_excel_data_validations IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT data_validations. @@ -74,4 +77,16 @@ CLASS zcl_excel_data_validations IMPLEMENTATION. METHOD size. ep_size = data_validations->size( ). ENDMETHOD. + + + METHOD clone. + DATA lo_excel_data_validations TYPE REF TO zcl_excel_data_validations. + + CREATE OBJECT lo_excel_data_validations. + + lo_excel_data_validations->data_validations ?= data_validations->clone( ). + + ro_object = lo_excel_data_validations. + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_excel_drawing.clas.abap b/src/zcl_excel_drawing.clas.abap index ae5131e..a4a29fe 100644 --- a/src/zcl_excel_drawing.clas.abap +++ b/src/zcl_excel_drawing.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_drawing DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. *"* public components of class ZCL_EXCEL_DRAWING @@ -36,6 +37,12 @@ CLASS zcl_excel_drawing DEFINITION c14 TYPE string VALUE 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart', END OF namespace. + METHODS clone REDEFINITION. + METHODS clone_attributes_to + IMPORTING + io_excel_drawing type ref to zcl_excel_drawing + RAISING + zcx_excel. METHODS constructor IMPORTING !ip_type TYPE zexcel_drawing_type DEFAULT zcl_excel_drawing=>type_image @@ -154,10 +161,11 @@ ENDCLASS. -CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. +CLASS zcl_excel_drawing IMPLEMENTATION. METHOD constructor. + super->constructor( ). me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call @@ -1140,4 +1148,36 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION. me->anchor = lv_anchor. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_drawing TYPE REF TO zcl_excel_drawing. + + CREATE OBJECT lo_excel_drawing. + clone_attributes_to( lo_excel_drawing ). + + ro_object = lo_excel_drawing. + ENDMETHOD. + + + METHOD clone_attributes_to. + + IF graph IS BOUND. + io_excel_drawing->graph ?= graph->clone( ). + ENDIF. + + io_excel_drawing->anchor = anchor. + io_excel_drawing->from_loc = from_loc. + io_excel_drawing->graph_type = graph_type. + io_excel_drawing->io = io. + io_excel_drawing->media = media. + io_excel_drawing->media_key_www = media_key_www. + io_excel_drawing->media_source = media_source. + io_excel_drawing->media_type = media_type. + io_excel_drawing->size = size. + io_excel_drawing->to_loc = to_loc. + io_excel_drawing->type = type. + + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_excel_drawings.clas.abap b/src/zcl_excel_drawings.clas.abap index 7c4ea3b..a3bc251 100644 --- a/src/zcl_excel_drawings.clas.abap +++ b/src/zcl_excel_drawings.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_drawings DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. @@ -39,6 +40,7 @@ CLASS zcl_excel_drawings DEFINITION METHODS get_type RETURNING VALUE(rp_type) TYPE zexcel_drawing_type . + METHODS clone REDEFINITION. *"* protected components of class ZCL_EXCEL_DRAWINGS *"* do not include other source files here!!! *"* protected components of class ZCL_EXCEL_DRAWINGS @@ -73,6 +75,7 @@ CLASS zcl_excel_drawings IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT drawings. type = ip_type. @@ -120,4 +123,23 @@ CLASS zcl_excel_drawings IMPLEMENTATION. ep_size = drawings->size( ). ENDMETHOD. + + + METHOD clone. + DATA: lo_excel_drawings TYPE REF TO zcl_excel_drawings, + lo_element TYPE REF TO zcl_excel_base, + lo_drawing TYPE REF TO zcl_excel_drawing, + lo_drawings TYPE TABLE OF REF TO zcl_excel_drawing. + + LOOP AT drawings->collection INTO lo_element. + lo_drawing ?= lo_element->clone( ). + APPEND lo_drawing TO lo_drawings. + ENDLOOP. + LOOP AT lo_drawings INTO lo_drawing. + add( lo_drawing ). + ENDLOOP. + + ro_object = me. + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_excel_graph.clas.abap b/src/zcl_excel_graph.clas.abap index e5f885f..31cfae0 100644 --- a/src/zcl_excel_graph.clas.abap +++ b/src/zcl_excel_graph.clas.abap @@ -1,6 +1,7 @@ CLASS zcl_excel_graph DEFINITION PUBLIC - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. @@ -292,6 +293,7 @@ CLASS zcl_excel_graph DEFINITION CONSTANTS c_print_lbl_true TYPE c VALUE '1'. "#EC NOTEXT CONSTANTS c_print_lbl_false TYPE c VALUE '0'. "#EC NOTEXT + METHODS clone REDEFINITION. METHODS constructor . METHODS create_serie IMPORTING @@ -324,6 +326,9 @@ CLASS zcl_excel_graph DEFINITION PROTECTED SECTION. *"* protected components of class ZCL_EXCEL_GRAPH *"* do not include other source files here!!! + METHODS clone_attributes_to + IMPORTING + io_excel_graph TYPE REF TO zcl_excel_graph. PRIVATE SECTION. *"* private components of class ZCL_EXCEL_GRAPH *"* do not include other source files here!!! @@ -335,6 +340,7 @@ CLASS zcl_excel_graph IMPLEMENTATION. METHOD constructor. + super->constructor( ). "Load default values me->pagemargins-b = '0.75'. me->pagemargins-l = '0.7'. @@ -407,4 +413,33 @@ CLASS zcl_excel_graph IMPLEMENTATION. METHOD set_title. me->title = ip_value. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_graph TYPE REF TO zcl_excel_graph. + + CREATE OBJECT lo_excel_graph. + clone_attributes_to( lo_excel_graph ). + + ro_object = lo_excel_graph. + ENDMETHOD. + + + METHOD clone_attributes_to. + + io_excel_graph->ns_1904val = ns_1904val. + io_excel_graph->ns_autotitledeletedval = ns_autotitledeletedval. + io_excel_graph->ns_c14styleval = ns_c14styleval. + io_excel_graph->ns_dispblanksasval = ns_dispblanksasval. + io_excel_graph->ns_langval = ns_langval. + io_excel_graph->ns_plotvisonlyval = ns_plotvisonlyval. + io_excel_graph->ns_roundedcornersval = ns_roundedcornersval. + io_excel_graph->ns_showdlblsovermaxval = ns_showdlblsovermaxval. + io_excel_graph->ns_styleval = ns_styleval. + io_excel_graph->pagemargins = pagemargins. + io_excel_graph->print_label = print_label. + io_excel_graph->series = series. + io_excel_graph->title = title. + + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_graph_bars.clas.abap b/src/zcl_excel_graph_bars.clas.abap index 0c47247..964b852 100644 --- a/src/zcl_excel_graph_bars.clas.abap +++ b/src/zcl_excel_graph_bars.clas.abap @@ -54,6 +54,7 @@ CLASS zcl_excel_graph_bars DEFINITION CONSTANTS c_invertifnegative_yes TYPE string VALUE '1'. "#EC NOTEXT CONSTANTS c_invertifnegative_no TYPE string VALUE '0'. "#EC NOTEXT + METHODS clone REDEFINITION. METHODS create_ax IMPORTING !ip_axid TYPE string OPTIONAL @@ -94,6 +95,7 @@ CLASS zcl_excel_graph_bars DEFINITION PROTECTED SECTION. *"* protected components of class ZCL_EXCEL_GRAPH_BARS *"* do not include other source files here!!! + METHODS clone_attributes_to REDEFINITION. PRIVATE SECTION. *"* private components of class ZCL_EXCEL_GRAPH_BARS *"* do not include other source files here!!! @@ -104,6 +106,40 @@ ENDCLASS. CLASS zcl_excel_graph_bars IMPLEMENTATION. + METHOD clone. + DATA: lo_bars TYPE REF TO zcl_excel_graph_bars. + + CREATE OBJECT lo_bars TYPE zcl_excel_graph_bars. + clone_attributes_to( lo_bars ). + + ro_object = lo_bars. + ENDMETHOD. + + + METHOD clone_attributes_to. + DATA: lo_bars TYPE REF TO zcl_excel_graph_bars. + + super->clone_attributes_to( io_excel_graph ). + + lo_bars ?= io_excel_graph. + + lo_bars->ns_bardirval = ns_bardirval. + lo_bars->ns_groupingval = ns_groupingval. + lo_bars->ns_varycolorsval = ns_varycolorsval. + lo_bars->ns_showlegendkeyval = ns_showlegendkeyval . + lo_bars->ns_showvalval = ns_showvalval. + lo_bars->ns_showcatnameval = ns_showcatnameval. + lo_bars->ns_showsernameval = ns_showsernameval. + lo_bars->ns_showpercentval = ns_showpercentval. + lo_bars->ns_showbubblesizeval = ns_showbubblesizeval. + lo_bars->ns_gapwidthval = ns_gapwidthval. + lo_bars->axes = axes. + lo_bars->ns_legendposval = ns_legendposval. + lo_bars->ns_overlayval = ns_overlayval. + + ENDMETHOD. + + METHOD create_ax. DATA ls_ax TYPE s_ax. ls_ax-type = ip_type. diff --git a/src/zcl_excel_graph_line.clas.abap b/src/zcl_excel_graph_line.clas.abap index 3a9930e..f00eee3 100644 --- a/src/zcl_excel_graph_line.clas.abap +++ b/src/zcl_excel_graph_line.clas.abap @@ -52,6 +52,7 @@ CLASS zcl_excel_graph_line DEFINITION CONSTANTS c_symbol_auto TYPE string VALUE 'auto'. "#EC NOTEXT CONSTANTS c_symbol_none TYPE string VALUE 'none'. "#EC NOTEXT + METHODS clone REDEFINITION. METHODS create_ax IMPORTING !ip_axid TYPE string OPTIONAL @@ -92,6 +93,7 @@ CLASS zcl_excel_graph_line DEFINITION PROTECTED SECTION. *"* protected components of class ZCL_EXCEL_GRAPH_LINE *"* do not include other source files here!!! + METHODS clone_attributes_to REDEFINITION. PRIVATE SECTION. *"* private components of class ZCL_EXCEL_GRAPH_LINE *"* do not include other source files here!!! @@ -102,6 +104,39 @@ ENDCLASS. CLASS zcl_excel_graph_line IMPLEMENTATION. + METHOD clone. + DATA: lo_line TYPE REF TO zcl_excel_graph_line. + + CREATE OBJECT lo_line TYPE zcl_excel_graph_line. + clone_attributes_to( lo_line ). + + ro_object = lo_line. + ENDMETHOD. + + + METHOD clone_attributes_to. + DATA: lo_line TYPE REF TO zcl_excel_graph_line. + + super->clone_attributes_to( io_excel_graph ). + + lo_line ?= io_excel_graph. + lo_line->ns_groupingval = ns_groupingval. + lo_line->ns_varycolorsval = ns_varycolorsval. + lo_line->ns_showlegendkeyval = ns_showlegendkeyval. + lo_line->ns_showvalval = ns_showvalval. + lo_line->ns_showcatnameval = ns_showcatnameval. + lo_line->ns_showsernameval = ns_showsernameval. + lo_line->ns_showpercentval = ns_showpercentval. + lo_line->ns_showbubblesizeval = ns_showbubblesizeval. + lo_line->ns_markerval = ns_markerval. + lo_line->ns_smoothval = ns_smoothval. + lo_line->axes = axes. + lo_line->ns_legendposval = ns_legendposval. + lo_line->ns_overlayval = ns_overlayval. + + ENDMETHOD. + + METHOD create_ax. DATA ls_ax TYPE s_ax. ls_ax-type = ip_type. diff --git a/src/zcl_excel_graph_pie.clas.abap b/src/zcl_excel_graph_pie.clas.abap index 7ff28c4..62250fe 100644 --- a/src/zcl_excel_graph_pie.clas.abap +++ b/src/zcl_excel_graph_pie.clas.abap @@ -22,6 +22,7 @@ CLASS zcl_excel_graph_pie DEFINITION DATA ns_showbubblesizeval TYPE string VALUE '0'. "#EC NOTEXT . . . . . . . . . . " . DATA ns_showleaderlinesval TYPE string VALUE '1'. "#EC NOTEXT . . . . . . . . . . " . + METHODS clone REDEFINITION. METHODS set_show_legend_key IMPORTING !ip_value TYPE c . @@ -46,6 +47,7 @@ CLASS zcl_excel_graph_pie DEFINITION PROTECTED SECTION. *"* protected components of class ZCL_EXCEL_GRAPH_PIE *"* do not include other source files here!!! + METHODS clone_attributes_to REDEFINITION. PRIVATE SECTION. *"* private components of class ZCL_EXCEL_GRAPH_PIE *"* do not include other source files here!!! @@ -53,7 +55,40 @@ ENDCLASS. -CLASS zcl_excel_graph_pie IMPLEMENTATION. +CLASS ZCL_EXCEL_GRAPH_PIE IMPLEMENTATION. + + + METHOD clone. + DATA: lo_pie TYPE REF TO zcl_excel_graph_pie. + + CREATE OBJECT lo_pie TYPE zcl_excel_graph_pie. + clone_attributes_to( lo_pie ). + + ro_object = lo_pie. + ENDMETHOD. + + + METHOD clone_attributes_to. + DATA: lo_pie TYPE REF TO zcl_excel_graph_pie. + + super->clone_attributes_to( io_excel_graph ). + + lo_pie ?= io_excel_graph. + lo_pie->ns_legendposval = ns_legendposval. + lo_pie->ns_overlayval = ns_overlayval. + lo_pie->ns_pprrtl = ns_pprrtl. + lo_pie->ns_endpararprlang = ns_endpararprlang. + lo_pie->ns_varycolorsval = ns_varycolorsval. + lo_pie->ns_firstsliceangval = ns_firstsliceangval. + lo_pie->ns_showlegendkeyval = ns_showlegendkeyval. + lo_pie->ns_showvalval = ns_showvalval. + lo_pie->ns_showcatnameval = ns_showcatnameval. + lo_pie->ns_showsernameval = ns_showsernameval. + lo_pie->ns_showpercentval = ns_showpercentval. + lo_pie->ns_showbubblesizeval = ns_showbubblesizeval. + lo_pie->ns_showleaderlinesval = ns_showleaderlinesval. + + ENDMETHOD. METHOD set_show_cat_name. diff --git a/src/zcl_excel_hyperlink.clas.abap b/src/zcl_excel_hyperlink.clas.abap index 0346557..f341946 100644 --- a/src/zcl_excel_hyperlink.clas.abap +++ b/src/zcl_excel_hyperlink.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_hyperlink DEFINITION PUBLIC FINAL - CREATE PRIVATE . + CREATE PRIVATE + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_HYPERLINK *"* do not include other source files here!!! @@ -32,6 +33,7 @@ CLASS zcl_excel_hyperlink DEFINITION METHODS get_url RETURNING VALUE(ev_url) TYPE string . + METHODS clone REDEFINITION. *"* protected components of class ZCL_EXCEL_HYPERLINK *"* do not include other source files here!!! PROTECTED SECTION. @@ -104,4 +106,20 @@ CLASS zcl_excel_hyperlink IMPLEMENTATION. me->column = zcl_excel_common=>convert_column2alpha( ip_column ). " issue #155 - less restrictive typing for ip_column me->row = ip_row. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_hyperlink TYPE REF TO zcl_excel_hyperlink. + + CREATE OBJECT lo_excel_hyperlink. + + lo_excel_hyperlink->cell_reference = cell_reference. + lo_excel_hyperlink->column = column. + lo_excel_hyperlink->internal = internal. + lo_excel_hyperlink->location = location. + lo_excel_hyperlink->row = row. + + ro_object = lo_excel_hyperlink. + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_excel_range.clas.abap b/src/zcl_excel_range.clas.abap index ea5feec..5aecffe 100644 --- a/src/zcl_excel_range.clas.abap +++ b/src/zcl_excel_range.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_range DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_RANGE *"* do not include other source files here!!! @@ -11,6 +12,7 @@ CLASS zcl_excel_range DEFINITION DATA name TYPE zexcel_range_name . DATA guid TYPE zexcel_range_guid . + METHODS clone REDEFINITION. METHODS get_guid RETURNING VALUE(ep_guid) TYPE zexcel_range_guid . @@ -24,6 +26,15 @@ CLASS zcl_excel_range DEFINITION METHODS get_value RETURNING VALUE(ep_value) TYPE zexcel_range_value . + METHODS get_value2 + EXPORTING + !ep_sheet_name TYPE zexcel_sheet_title + !ep_start_row TYPE zexcel_cell_row + !ep_start_column TYPE zexcel_cell_column_alpha + !ep_stop_row TYPE zexcel_cell_row + !ep_stop_column TYPE zexcel_cell_column_alpha + RAISING + zcx_excel. METHODS set_range_value IMPORTING !ip_value TYPE zexcel_range_value . @@ -42,6 +53,18 @@ ENDCLASS. CLASS zcl_excel_range IMPLEMENTATION. + METHOD clone. + DATA lo_excel_range TYPE REF TO zcl_excel_range. + + CREATE OBJECT lo_excel_range. + + lo_excel_range->name = name. + lo_excel_range->value = value. + + ro_object = lo_excel_range. + ENDMETHOD. + + METHOD get_guid. ep_guid = me->guid. @@ -56,6 +79,37 @@ CLASS zcl_excel_range IMPLEMENTATION. ENDMETHOD. + METHOD get_value2. + DATA: lv_column_start TYPE zexcel_cell_column_alpha, + lv_column_start_int TYPE zexcel_cell_column, + lv_column_end TYPE zexcel_cell_column_alpha, + lv_column_end_int TYPE zexcel_cell_column, + lv_row_start TYPE zexcel_cell_row, + lv_row_end TYPE zexcel_cell_row, + lv_sheet TYPE zexcel_sheet_title. + + zcl_excel_common=>convert_range2column_a_row( + EXPORTING + i_range = value + i_allow_1dim_range = abap_true + IMPORTING + e_column_start = lv_column_start + e_column_start_int = lv_column_start_int + e_column_end = lv_column_end + e_column_end_int = lv_column_end_int + e_row_start = lv_row_start + e_row_end = lv_row_end + e_sheet = lv_sheet ). + + ep_sheet_name = lv_sheet. + ep_start_row = lv_row_start. + ep_start_column = lv_column_start. + ep_stop_row = lv_row_end. + ep_stop_column = lv_column_end. + + ENDMETHOD. + + METHOD set_range_value. me->value = ip_value. ENDMETHOD. diff --git a/src/zcl_excel_ranges.clas.abap b/src/zcl_excel_ranges.clas.abap index 8b591e7..351b4de 100644 --- a/src/zcl_excel_ranges.clas.abap +++ b/src/zcl_excel_ranges.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_ranges DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_RANGES *"* do not include other source files here!!! @@ -29,6 +30,7 @@ CLASS zcl_excel_ranges DEFINITION METHODS size RETURNING VALUE(ep_size) TYPE i . + METHODS clone REDEFINITION. *"* protected components of class ZABAP_EXCEL_WORKSHEETS *"* do not include other source files here!!! PROTECTED SECTION. @@ -56,6 +58,7 @@ CLASS zcl_excel_ranges IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT ranges. @@ -85,4 +88,15 @@ CLASS zcl_excel_ranges IMPLEMENTATION. METHOD size. ep_size = ranges->size( ). ENDMETHOD. + + + METHOD clone. + DATA lo_excel_ranges TYPE REF TO zcl_excel_ranges. + + CREATE OBJECT lo_excel_ranges. + + lo_excel_ranges->ranges ?= ranges->clone( ). + + ro_object = lo_excel_ranges. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_row.clas.abap b/src/zcl_excel_row.clas.abap index 61479ae..b562d15 100644 --- a/src/zcl_excel_row.clas.abap +++ b/src/zcl_excel_row.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_row DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_ROW *"* do not include other source files here!!! @@ -60,6 +61,7 @@ CLASS zcl_excel_row DEFINITION METHODS set_xf_index IMPORTING !ip_xf_index TYPE int4 . + METHODS clone REDEFINITION. *"* protected components of class ZCL_EXCEL_ROW *"* do not include other source files here!!! PROTECTED SECTION. @@ -82,6 +84,8 @@ CLASS zcl_excel_row IMPLEMENTATION. METHOD constructor. + super->constructor( ). + " Initialise values me->row_index = ip_index. me->row_height = -1. @@ -235,4 +239,21 @@ CLASS zcl_excel_row IMPLEMENTATION. METHOD set_xf_index. me->xf_index = ip_xf_index. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_row TYPE REF TO zcl_excel_row. + + CREATE OBJECT lo_excel_row. + + lo_excel_row->collapsed = collapsed. + lo_excel_row->custom_height = custom_height. + lo_excel_row->outline_level = outline_level. + lo_excel_row->row_height = row_height. + lo_excel_row->row_index = row_index. + lo_excel_row->visible = visible. + lo_excel_row->xf_index = xf_index. + + ro_object = lo_excel_row. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_rows.clas.abap b/src/zcl_excel_rows.clas.abap index c8f0451..1119614 100644 --- a/src/zcl_excel_rows.clas.abap +++ b/src/zcl_excel_rows.clas.abap @@ -6,7 +6,8 @@ CLASS zcl_excel_rows DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_ROWS *"* do not include other source files here!!! @@ -41,6 +42,7 @@ CLASS zcl_excel_rows DEFINITION METHODS get_max_index RETURNING VALUE(ep_index) TYPE i . + METHODS clone REDEFINITION. PROTECTED SECTION. *"* private components of class ZABAP_EXCEL_RANGES *"* do not include other source files here!!! @@ -82,6 +84,7 @@ CLASS zcl_excel_rows IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT rows. ENDMETHOD. "CONSTRUCTOR @@ -138,4 +141,17 @@ CLASS zcl_excel_rows IMPLEMENTATION. METHOD size. ep_size = rows->size( ). ENDMETHOD. "SIZE + + + METHOD clone. + DATA lo_excel_rows TYPE REF TO zcl_excel_rows. + + CREATE OBJECT lo_excel_rows. + + lo_excel_rows->rows ?= rows->clone( ). + + lo_excel_rows->rows_hashed = rows_hashed. + + ro_object = lo_excel_rows. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_sheet_setup.clas.abap b/src/zcl_excel_sheet_setup.clas.abap index c937bb4..31f19ff 100644 --- a/src/zcl_excel_sheet_setup.clas.abap +++ b/src/zcl_excel_sheet_setup.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_sheet_setup DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. *"* public components of class ZCL_EXCEL_SHEET_SETUP @@ -149,6 +150,7 @@ CLASS zcl_excel_sheet_setup DEFINITION !ep_odd_footer TYPE zexcel_s_worksheet_head_foot !ep_even_header TYPE zexcel_s_worksheet_head_foot !ep_even_footer TYPE zexcel_s_worksheet_head_foot . + METHODS clone REDEFINITION. PROTECTED SECTION. *"* protected components of class ZCL_EXCEL_SHEET_SETUP @@ -170,6 +172,8 @@ CLASS zcl_excel_sheet_setup IMPLEMENTATION. METHOD constructor. + super->constructor( ). + orientation = me->c_orientation_default. * default margins @@ -475,4 +479,46 @@ CLASS zcl_excel_sheet_setup IMPLEMENTATION. IF ip_top IS SUPPLIED. margin_top = lv_coef * ip_top. ENDIF. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_sheet_setup TYPE REF TO zcl_excel_sheet_setup. + + CREATE OBJECT lo_excel_sheet_setup. + + lo_excel_sheet_setup->black_and_white = black_and_white. + lo_excel_sheet_setup->cell_comments = cell_comments. + lo_excel_sheet_setup->copies = copies. + lo_excel_sheet_setup->diff_oddeven_headerfooter = diff_oddeven_headerfooter. + lo_excel_sheet_setup->draft = draft. + lo_excel_sheet_setup->errors = errors. + lo_excel_sheet_setup->even_footer = even_footer. + lo_excel_sheet_setup->even_header = even_header. + lo_excel_sheet_setup->first_page_number = first_page_number. + lo_excel_sheet_setup->fit_to_height = fit_to_height. + lo_excel_sheet_setup->fit_to_page = fit_to_page. + lo_excel_sheet_setup->fit_to_width = fit_to_width. + lo_excel_sheet_setup->horizontal_centered = horizontal_centered. + lo_excel_sheet_setup->horizontal_dpi = horizontal_dpi. + lo_excel_sheet_setup->margin_bottom = margin_bottom. + lo_excel_sheet_setup->margin_footer = margin_footer. + lo_excel_sheet_setup->margin_header = margin_header. + lo_excel_sheet_setup->margin_left = margin_left. + lo_excel_sheet_setup->margin_right = margin_right. + lo_excel_sheet_setup->margin_top = margin_top. + lo_excel_sheet_setup->odd_footer = odd_footer. + lo_excel_sheet_setup->odd_header = odd_header. + lo_excel_sheet_setup->orientation = orientation. + lo_excel_sheet_setup->page_order = page_order. + lo_excel_sheet_setup->paper_height = paper_height. + lo_excel_sheet_setup->paper_size = paper_size. + lo_excel_sheet_setup->paper_width = paper_width. + lo_excel_sheet_setup->scale = scale. + lo_excel_sheet_setup->use_first_page_num = use_first_page_num. + lo_excel_sheet_setup->use_printer_defaults = use_printer_defaults. + lo_excel_sheet_setup->vertical_centered = vertical_centered. + lo_excel_sheet_setup->vertical_dpi = vertical_dpi. + + ro_object = lo_excel_sheet_setup. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_style.clas.abap b/src/zcl_excel_style.clas.abap index 1fe4446..3d94f0c 100644 --- a/src/zcl_excel_style.clas.abap +++ b/src/zcl_excel_style.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_style DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_STYLE *"* do not include other source files here!!! @@ -21,6 +22,7 @@ CLASS zcl_excel_style DEFINITION METHODS get_guid RETURNING VALUE(ep_guid) TYPE zexcel_cell_style . + METHODS clone REDEFINITION. *"* protected components of class ZABAP_EXCEL_STYLE *"* do not include other source files here!!! PROTECTED SECTION. @@ -38,6 +40,7 @@ CLASS zcl_excel_style IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT font. CREATE OBJECT fill. @@ -101,4 +104,11 @@ CLASS zcl_excel_style IMPLEMENTATION. ep_guid = me->guid. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_style TYPE REF TO zcl_excel_style. + CREATE OBJECT lo_excel_style EXPORTING io_clone_of = me. + ro_object = lo_excel_style. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_style_cond.clas.abap b/src/zcl_excel_style_cond.clas.abap index fb4efc3..aef6fa9 100644 --- a/src/zcl_excel_style_cond.clas.abap +++ b/src/zcl_excel_style_cond.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_style_cond DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. CLASS zcl_excel_style_conditional DEFINITION LOAD . @@ -120,6 +121,7 @@ CLASS zcl_excel_style_cond DEFINITION METHODS get_guid RETURNING VALUE(ep_guid) TYPE zexcel_cell_style . + METHODS clone REDEFINITION. *"* protected components of class ZABAP_EXCEL_STYLE_FONT *"* do not include other source files here!!! *"* protected components of class ZABAP_EXCEL_STYLE_FONT @@ -184,6 +186,9 @@ CLASS zcl_excel_style_cond IMPLEMENTATION. METHOD constructor. DATA: ls_iconset TYPE zexcel_conditional_iconset. + + super->constructor( ). + ls_iconset-iconset = zcl_excel_style_cond=>c_iconset_3trafficlights. ls_iconset-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_percent. ls_iconset-cfvo1_value = '0'. @@ -240,4 +245,24 @@ CLASS zcl_excel_style_cond IMPLEMENTATION. ip_stop_column = ip_stop_column ). ENDMETHOD. + + + METHOD clone. + DATA lo_excel_style_cond TYPE REF TO zcl_excel_style_cond. + + CREATE OBJECT lo_excel_style_cond EXPORTING ip_dimension_range = mv_rule_range. + + lo_excel_style_cond->mode_above_average = mode_above_average. + lo_excel_style_cond->mode_cellis = mode_cellis. + lo_excel_style_cond->mode_colorscale = mode_colorscale. + lo_excel_style_cond->mode_databar = mode_databar. + lo_excel_style_cond->mode_expression = mode_expression. + lo_excel_style_cond->mode_iconset = mode_iconset. + lo_excel_style_cond->mode_textfunction = mode_textfunction. + lo_excel_style_cond->mode_top10 = mode_top10. + lo_excel_style_cond->priority = priority. + lo_excel_style_cond->rule = rule. + + ro_object = lo_excel_style_cond. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_styles.clas.abap b/src/zcl_excel_styles.clas.abap index edf1dff..aea2706 100644 --- a/src/zcl_excel_styles.clas.abap +++ b/src/zcl_excel_styles.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_styles DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_STYLES *"* do not include other source files here!!! @@ -34,6 +35,7 @@ CLASS zcl_excel_styles DEFINITION !io_style TYPE REF TO zcl_excel_style RETURNING VALUE(ep_style_code) TYPE i . + METHODS clone REDEFINITION. *"* protected components of class ZABAP_EXCEL_WORKSHEETS *"* do not include other source files here!!! *"* protected components of class ZABAP_EXCEL_WORKSHEETS @@ -67,6 +69,7 @@ CLASS zcl_excel_styles IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT styles. ENDMETHOD. @@ -113,4 +116,15 @@ CLASS zcl_excel_styles IMPLEMENTATION. ep_size = styles->size( ). ENDMETHOD. + + + METHOD clone. + DATA lo_excel_styles TYPE REF TO zcl_excel_styles. + + CREATE OBJECT lo_excel_styles. + + lo_excel_styles->styles ?= styles->clone( ). + + ro_object = lo_excel_styles. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_styles_cond.clas.abap b/src/zcl_excel_styles_cond.clas.abap index 854b706..066a9d1 100644 --- a/src/zcl_excel_styles_cond.clas.abap +++ b/src/zcl_excel_styles_cond.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_styles_cond DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_STYLES_COND *"* do not include other source files here!!! @@ -29,6 +30,7 @@ CLASS zcl_excel_styles_cond DEFINITION METHODS size RETURNING VALUE(ep_size) TYPE i . + METHODS clone REDEFINITION. *"* protected components of class ZABAP_EXCEL_WORKSHEETS *"* do not include other source files here!!! PROTECTED SECTION. @@ -55,6 +57,7 @@ CLASS zcl_excel_styles_cond IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT styles_cond. @@ -86,4 +89,15 @@ CLASS zcl_excel_styles_cond IMPLEMENTATION. METHOD size. ep_size = styles_cond->size( ). ENDMETHOD. + + + METHOD clone. + DATA lo_excel_styles_cond TYPE REF TO zcl_excel_styles_cond. + + CREATE OBJECT lo_excel_styles_cond. + + lo_excel_styles_cond->styles_cond ?= styles_cond->clone( ). + + ro_object = lo_excel_styles_cond. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_table.clas.abap b/src/zcl_excel_table.clas.abap index 6887e3f..488e422 100644 --- a/src/zcl_excel_table.clas.abap +++ b/src/zcl_excel_table.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_table DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_TABLE *"* do not include other source files here!!! @@ -75,6 +76,7 @@ CLASS zcl_excel_table DEFINITION CONSTANTS builtinstyle_medium25 TYPE zexcel_table_style VALUE 'TableStyleMedium26'. "#EC NOTEXT CONSTANTS builtinstyle_medium27 TYPE zexcel_table_style VALUE 'TableStyleMedium27'. "#EC NOTEXT + METHODS clone REDEFINITION. METHODS get_totals_formula IMPORTING !ip_column TYPE clike @@ -301,4 +303,19 @@ CLASS zcl_excel_table IMPLEMENTATION. METHOD set_id. id = iv_id. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_table TYPE REF TO zcl_excel_table. + + CREATE OBJECT lo_excel_table. + + lo_excel_table->fieldcat = fieldcat. + lo_excel_table->id = id. + lo_excel_table->name = name. + lo_excel_table->settings = settings. + lo_excel_table->table_data = table_data. + + ro_object = lo_excel_table. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index a94d403..3a19826 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -1,6 +1,7 @@ CLASS zcl_excel_worksheet DEFINITION PUBLIC - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. *"* public components of class ZCL_EXCEL_WORKSHEET @@ -305,6 +306,7 @@ CLASS zcl_excel_worksheet DEFINITION RAISING zcx_excel . CLASS-METHODS class_constructor . + METHODS clone REDEFINITION. METHODS constructor IMPORTING !ip_excel TYPE REF TO zcl_excel @@ -1993,6 +1995,8 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD constructor. DATA: lv_title TYPE zexcel_sheet_title. + super->constructor( ). + me->excel = ip_excel. me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call @@ -4407,4 +4411,196 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD zif_excel_sheet_vba_project~set_codename_pr. me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. ENDMETHOD. "ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR + + + METHOD clone. + DATA: lo_excel_worksheet TYPE REF TO zcl_excel_worksheet, + lo_drawing TYPE REF TO zcl_excel_drawing, + lo_new_drawing TYPE REF TO zcl_excel_drawing, + lo_range TYPE REF TO zcl_excel_range, + lo_new_range TYPE REF TO zcl_excel_range, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, + lv_range TYPE string, + lv_sheet_name TYPE zexcel_sheet_title, + lv_start_row TYPE zexcel_cell_row, + lv_start_column TYPE zexcel_cell_column_alpha, + lv_stop_row TYPE zexcel_cell_row, + lv_stop_column TYPE zexcel_cell_column_alpha, + lo_table TYPE REF TO zcl_excel_table, + lo_new_table TYPE REF TO zcl_excel_table, + lv_table_id TYPE i. + + + CREATE OBJECT lo_excel_worksheet + EXPORTING + ip_excel = excel. + + IF charts IS BOUND. + lo_iterator = charts->get_iterator( ). + WHILE lo_iterator->has_next( ) = abap_true. + lo_drawing ?= lo_iterator->get_next( ). + lo_new_drawing = excel->add_new_drawing( + ip_type = lo_drawing->get_type( ) + ip_title = lo_drawing->title ). + lo_drawing->clone_attributes_to( lo_new_drawing ). + lo_excel_worksheet->add_drawing( lo_new_drawing ). + ENDWHILE. + ENDIF. + + IF columns IS BOUND. + lo_excel_worksheet->columns ?= columns->clone( ). + ENDIF. + + IF column_default IS BOUND. + lo_excel_worksheet->column_default ?= column_default->clone( ). + ENDIF. + + IF comments IS BOUND. + lo_excel_worksheet->comments ?= comments->clone( ). + ENDIF. + + IF data_validations IS BOUND. + lo_excel_worksheet->data_validations ?= data_validations->clone( ). + ENDIF. + + IF drawings IS BOUND. + IF drawings->size( ) > 0. + ASSERT 1 = 1. " For quick debug + ENDIF. + lo_excel_worksheet->drawings ?= drawings->clone( ). + ENDIF. + + IF hyperlinks IS BOUND. + lo_excel_worksheet->hyperlinks ?= hyperlinks->clone( ). + ENDIF. + + IF mo_pagebreaks IS BOUND. + lo_excel_worksheet->mo_pagebreaks ?= mo_pagebreaks->clone( ). + ENDIF. + + IF ranges IS BOUND. + lo_iterator = ranges->get_iterator( ). + WHILE lo_iterator->has_next( ) = abap_true. + lo_range ?= lo_iterator->get_next( ). + + lo_new_range = lo_excel_worksheet->add_new_range( ). + lo_new_range->name = lo_range->name. + + IF lo_range->get_value( ) CS ','. + " Dirty solution for named range with 2 or more areas (especially print settings, repeated columns and rows), + " hopefully abap2xlsx will better support this in the future. + lv_range = replace( val = lo_range->get_value( ) + sub = get_title( ) && '!' + with = lo_excel_worksheet->get_title( ) && '!' + occ = 0 ). + lo_new_range->set_range_value( lv_range ). + ELSE. + lo_range->get_value2( + IMPORTING + ep_sheet_name = lv_sheet_name + ep_start_row = lv_start_row + ep_start_column = lv_start_column + ep_stop_row = lv_stop_row + ep_stop_column = lv_stop_column ). + IF lv_sheet_name = get_title( ). + lv_sheet_name = lo_excel_worksheet->get_title( ). + ENDIF. + lo_new_range->set_value( + ip_sheet_name = lv_sheet_name + ip_start_row = lv_start_row + ip_start_column = lv_start_column + ip_stop_row = lv_stop_row + ip_stop_column = lv_stop_column ). + ENDIF. + ENDWHILE. + ENDIF. + + IF rows IS BOUND. + lo_excel_worksheet->rows ?= rows->clone( ). + ENDIF. + + IF row_default IS BOUND. + lo_excel_worksheet->row_default ?= row_default->clone( ). + ENDIF. + + IF sheet_setup IS BOUND. + lo_excel_worksheet->sheet_setup ?= sheet_setup->clone( ). + ENDIF. + + IF styles_cond IS BOUND. + lo_excel_worksheet->styles_cond ?= styles_cond->clone( ). + ENDIF. + + IF tables IS BOUND. + lo_iterator = tables->get_iterator( ). + WHILE lo_iterator->has_next( ) = abap_true. + lo_table ?= lo_iterator->get_next( ). + lo_new_table ?= lo_table->clone( ). + lv_table_id = excel->get_next_table_id( ). + lo_new_table->set_id( iv_id = lv_table_id ). + lo_excel_worksheet->tables->add( lo_new_table ). + ENDWHILE. + ENDIF. + + lo_excel_worksheet->active_cell = active_cell. + lo_excel_worksheet->column_formulas = column_formulas. + lo_excel_worksheet->default_excel_date_format = default_excel_date_format. + lo_excel_worksheet->default_excel_time_format = default_excel_time_format. + lo_excel_worksheet->excel = excel. + lo_excel_worksheet->freeze_pane_cell_column = freeze_pane_cell_column. + lo_excel_worksheet->freeze_pane_cell_row = freeze_pane_cell_row. + lo_excel_worksheet->lower_cell = lower_cell. + lo_excel_worksheet->mt_ignored_errors = mt_ignored_errors. + lo_excel_worksheet->mt_merged_cells = mt_merged_cells. + lo_excel_worksheet->mt_row_outlines = mt_row_outlines. + lo_excel_worksheet->print_gridlines = print_gridlines. + lo_excel_worksheet->print_title_col_from = print_title_col_from. + lo_excel_worksheet->print_title_col_to = print_title_col_to. + lo_excel_worksheet->print_title_row_from = print_title_row_from. + lo_excel_worksheet->print_title_row_to = print_title_row_to. + lo_excel_worksheet->right_to_left = right_to_left. + lo_excel_worksheet->sheet_content = sheet_content. + lo_excel_worksheet->show_gridlines = show_gridlines. + lo_excel_worksheet->show_rowcolheaders = show_rowcolheaders. + lo_excel_worksheet->styles = styles. + lo_excel_worksheet->tabcolor = tabcolor. + lo_excel_worksheet->upper_cell = upper_cell. + + lo_excel_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties~hidden. + lo_excel_worksheet->zif_excel_sheet_properties~hide_columns_from = zif_excel_sheet_properties~hide_columns_from. + lo_excel_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties~selected. + lo_excel_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties~show_zeros. + lo_excel_worksheet->zif_excel_sheet_properties~style = zif_excel_sheet_properties~style. + lo_excel_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties~summarybelow. + lo_excel_worksheet->zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties~summaryright. + lo_excel_worksheet->zif_excel_sheet_properties~zoomscale = zif_excel_sheet_properties~zoomscale. + lo_excel_worksheet->zif_excel_sheet_properties~zoomscale_normal = zif_excel_sheet_properties~zoomscale_normal. + lo_excel_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = zif_excel_sheet_properties~zoomscale_pagelayoutview. + lo_excel_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = zif_excel_sheet_properties~zoomscale_sheetlayoutview. + + lo_excel_worksheet->zif_excel_sheet_protection~auto_filter = zif_excel_sheet_protection~auto_filter. + lo_excel_worksheet->zif_excel_sheet_protection~delete_columns = zif_excel_sheet_protection~delete_columns. + lo_excel_worksheet->zif_excel_sheet_protection~delete_rows = zif_excel_sheet_protection~delete_rows. + lo_excel_worksheet->zif_excel_sheet_protection~format_cells = zif_excel_sheet_protection~format_cells. + lo_excel_worksheet->zif_excel_sheet_protection~format_columns = zif_excel_sheet_protection~format_columns. + lo_excel_worksheet->zif_excel_sheet_protection~format_rows = zif_excel_sheet_protection~format_rows. + lo_excel_worksheet->zif_excel_sheet_protection~insert_columns = zif_excel_sheet_protection~insert_columns. + lo_excel_worksheet->zif_excel_sheet_protection~insert_hyperlinks = zif_excel_sheet_protection~insert_hyperlinks. + lo_excel_worksheet->zif_excel_sheet_protection~insert_rows = zif_excel_sheet_protection~insert_rows. + lo_excel_worksheet->zif_excel_sheet_protection~objects = zif_excel_sheet_protection~objects. + lo_excel_worksheet->zif_excel_sheet_protection~password = zif_excel_sheet_protection~password. + lo_excel_worksheet->zif_excel_sheet_protection~pivot_tables = zif_excel_sheet_protection~pivot_tables. + lo_excel_worksheet->zif_excel_sheet_protection~protected = zif_excel_sheet_protection~protected. + lo_excel_worksheet->zif_excel_sheet_protection~scenarios = zif_excel_sheet_protection~scenarios. + lo_excel_worksheet->zif_excel_sheet_protection~select_locked_cells = zif_excel_sheet_protection~select_locked_cells. + lo_excel_worksheet->zif_excel_sheet_protection~select_unlocked_cells = zif_excel_sheet_protection~select_unlocked_cells. + lo_excel_worksheet->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection~sheet. + lo_excel_worksheet->zif_excel_sheet_protection~sort = zif_excel_sheet_protection~sort. + + lo_excel_worksheet->zif_excel_sheet_vba_project~codename = zif_excel_sheet_vba_project~codename. + lo_excel_worksheet->zif_excel_sheet_vba_project~codename_pr = zif_excel_sheet_vba_project~codename_pr. + lo_excel_worksheet->zif_excel_sheet_vba_project~vbaproject = zif_excel_sheet_vba_project~vbaproject. + + ro_object = lo_excel_worksheet. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_worksheet_pagebreaks.clas.abap b/src/zcl_excel_worksheet_pagebreaks.clas.abap index 354b682..7cec562 100644 --- a/src/zcl_excel_worksheet_pagebreaks.clas.abap +++ b/src/zcl_excel_worksheet_pagebreaks.clas.abap @@ -1,6 +1,7 @@ CLASS zcl_excel_worksheet_pagebreaks DEFINITION PUBLIC - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. PUBLIC SECTION. @@ -21,6 +22,7 @@ CLASS zcl_excel_worksheet_pagebreaks DEFINITION METHODS get_all_pagebreaks RETURNING VALUE(rt_pagebreaks) TYPE tt_pagebreak_at . + METHODS clone REDEFINITION. PROTECTED SECTION. DATA mt_pagebreaks TYPE tt_pagebreak_at . @@ -47,4 +49,15 @@ CLASS zcl_excel_worksheet_pagebreaks IMPLEMENTATION. METHOD get_all_pagebreaks. rt_pagebreaks = me->mt_pagebreaks. ENDMETHOD. + + + METHOD clone. + DATA lo_excel_worksheet_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks. + + CREATE OBJECT lo_excel_worksheet_pagebreaks. + + lo_excel_worksheet_pagebreaks->mt_pagebreaks = mt_pagebreaks. + + ro_object = lo_excel_worksheet_pagebreaks. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_worksheets.clas.abap b/src/zcl_excel_worksheets.clas.abap index 1c48498..2456ef3 100644 --- a/src/zcl_excel_worksheets.clas.abap +++ b/src/zcl_excel_worksheets.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_excel_worksheets DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + INHERITING FROM zcl_excel_base. *"* public components of class ZCL_EXCEL_WORKSHEETS *"* do not include other source files here!!! @@ -32,6 +33,7 @@ CLASS zcl_excel_worksheets DEFINITION METHODS size RETURNING VALUE(ep_size) TYPE i . + METHODS clone REDEFINITION. *"* protected components of class ZCL_EXCEL_WORKSHEETS *"* do not include other source files here!!! PROTECTED SECTION. @@ -63,6 +65,7 @@ CLASS zcl_excel_worksheets IMPLEMENTATION. METHOD constructor. + super->constructor( ). CREATE OBJECT worksheets. ENDMETHOD. @@ -103,4 +106,18 @@ CLASS zcl_excel_worksheets IMPLEMENTATION. ep_size = worksheets->size( ). ENDMETHOD. + + + METHOD clone. + DATA lo_excel_worksheets TYPE REF TO zcl_excel_worksheets. + + CREATE OBJECT lo_excel_worksheets. + + lo_excel_worksheets->worksheets ?= worksheets->clone( ). + + lo_excel_worksheets->active_worksheet = active_worksheet. + lo_excel_worksheets->name = name. + + ro_object = lo_excel_worksheets. + ENDMETHOD. ENDCLASS.