From 8fb4ca103eb2174b597c37819ae081c8dd8884cf Mon Sep 17 00:00:00 2001 From: Alessandro Iannacci Date: Wed, 5 Dec 2012 12:05:41 +0000 Subject: [PATCH] git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@387 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049 --- ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk | 10553 --------------------------- 1 file changed, 10553 deletions(-) delete mode 100644 ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk diff --git a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk deleted file mode 100644 index 3b34fce..0000000 --- a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk +++ /dev/null @@ -1,10553 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - trunk/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk | CodeExchange - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - Guest - -
-
- - Welcome Alessandro Iannacci - Log Off - -
-
- -
- -
- - - - -
-
-
-
- - -
- - -
-
-
- -
- -
-
-
- - - - -
- - Projects > - abap2xlsx > - Expert View - -
- Logo-codeexchange - Code Exchange -
-
- - - - - - - - - - -
- - - - - - -
- - - - - - -
-

root/trunk/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk

- - -
-
- Revision log - - - - - - -
- Download -
- - - - - -
- -
- User picture -
- - -
- - -

Author: Stefan Schmöcker

- - -

Revision: 378 («Previous Next» Latest)

-

(Dec 02 14:15 UTC) 3 days ago

-
- - -

-

set to test #235 - Print - Titles:  Repeatable Rows and Columns
-

-
- -
 
- - - - - - -

Showing without highlighting since it looks like a big file and may slow your browser - show with highlighting

- - - Show/hide line numbers - - - - - - - - -
<?xml version="1.0" encoding="utf-8"?>
-<CLAS CLSNAME="ZCL_EXCEL_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Worksheet" UUID="C1BF274C8A345F2DE1000000C0A8FA19" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 ">
- <implementing CLSNAME="ZCL_EXCEL_WORKSHEET" REFCLSNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS" VERSION="1" EXPOSURE="2" STATE="1" RELTYPE="1"/>
- <implementing CLSNAME="ZCL_EXCEL_WORKSHEET" REFCLSNAME="ZIF_EXCEL_SHEET_PROPERTIES" VERSION="1" EXPOSURE="2" STATE="1" RELTYPE="1"/>
- <implementing CLSNAME="ZCL_EXCEL_WORKSHEET" REFCLSNAME="ZIF_EXCEL_SHEET_PROTECTION" VERSION="1" EXPOSURE="2" STATE="1" RELTYPE="1"/>
- <implementing CLSNAME="ZCL_EXCEL_WORKSHEET" REFCLSNAME="ZIF_EXCEL_SHEET_VBA_PROJECT" VERSION="1" EXPOSURE="2" STATE="1" RELTYPE="1"/>
- <publicSection>class ZCL_EXCEL_WORKSHEET definition
-  public
-  final
-  create public .
-
-*&quot;* public components of class ZCL_EXCEL_WORKSHEET
-*&quot;* do not include other source files here!!!
-public section.
-  type-pools ABAP .
-
-  interfaces ZIF_EXCEL_SHEET_PRINTSETTINGS .
-  interfaces ZIF_EXCEL_SHEET_PROPERTIES .
-  interfaces ZIF_EXCEL_SHEET_PROTECTION .
-  interfaces ZIF_EXCEL_SHEET_VBA_PROJECT .
-
-  aliases CLEAR_PRINT_REPEAT_COLUMNS
-    for ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS .
-  aliases CLEAR_PRINT_REPEAT_ROWS
-    for ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS .
-  aliases GET_PRINT_REPEAT_COLUMNS
-    for ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS .
-  aliases GET_PRINT_REPEAT_ROWS
-    for ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS .
-  aliases SET_PRINT_REPEAT_COLUMNS
-    for ZIF_EXCEL_SHEET_PRINTSETTINGS~SET_PRINT_REPEAT_COLUMNS .
-  aliases SET_PRINT_REPEAT_ROWS
-    for ZIF_EXCEL_SHEET_PRINTSETTINGS~SET_PRINT_REPEAT_ROWS .
-
-  constants C_BREAK_COLUMN type ZEXCEL_BREAK value 2. &quot;#EC NOTEXT
-  constants C_BREAK_NONE type ZEXCEL_BREAK value 0. &quot;#EC NOTEXT
-  constants C_BREAK_ROW type ZEXCEL_BREAK value 1. &quot;#EC NOTEXT
-  data EXCEL type ref to ZCL_EXCEL read-only .
-  data PRINT_GRIDLINES type ZEXCEL_PRINT_GRIDLINES read-only value ABAP_FALSE. &quot;#EC NOTEXT .
-  data SHEET_CONTENT type ZEXCEL_T_CELL_DATA .
-  data SHEET_CONTENT_MERGE type ZEXCEL_T_CELL_DATA_UNSORTED .
-  data SHEET_SETUP type ref to ZCL_EXCEL_SHEET_SETUP .
-  data SHOW_GRIDLINES type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. &quot;#EC NOTEXT .
-  data SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. &quot;#EC NOTEXT .
-  data STYLES type ZEXCEL_T_SHEET_STYLE .
-  data TABCOLOR type ZEXCEL_S_TABCOLOR read-only .
-
-  methods ADD_DRAWING
-    importing
-      !IP_DRAWING type ref to ZCL_EXCEL_DRAWING .
-  methods ADD_NEW_CONDITIONAL_STYLE
-    returning
-      value(EO_CONDITIONAL_STYLE) type ref to ZCL_EXCEL_STYLE_CONDITIONAL .
-  methods ADD_NEW_DATA_VALIDATION
-    returning
-      value(EO_DATA_VALIDATION) type ref to ZCL_EXCEL_DATA_VALIDATION .
-  methods ADD_NEW_RANGE
-    returning
-      value(EO_RANGE) type ref to ZCL_EXCEL_RANGE .
-  methods BIND_ALV
-    importing
-      !IO_ALV type ref to OBJECT
-      !IT_TABLE type STANDARD TABLE
-      !I_TOP type I default 1
-      !I_LEFT type I default 1
-      !TABLE_STYLE type ZEXCEL_TABLE_STYLE optional
-    raising
-      ZCX_EXCEL .
-  type-pools SLIS .
-  type-pools SOI .
-  methods BIND_ALV_OLE2
-    importing
-      !I_DOCUMENT_URL type CHAR255 default SPACE
-      !I_XLS type C default SPACE
-      !I_SAVE_PATH type STRING
-      !IO_ALV type ref to CL_GUI_ALV_GRID
-      !IT_LISTHEADER type SLIS_T_LISTHEADER optional
-      !I_TOP type I default 1
-      !I_LEFT type I default 1
-      !I_COLUMNS_HEADER type C default &apos;X&apos;
-      !I_COLUMNS_AUTOFIT type C default &apos;X&apos;
-      !I_FORMAT_COL_HEADER type SOI_FORMAT_ITEM optional
-      !I_FORMAT_SUBTOTAL type SOI_FORMAT_ITEM optional
-      !I_FORMAT_TOTAL type SOI_FORMAT_ITEM optional
-    exceptions
-      MISS_GUIDE
-      EX_TRANSFER_KKBLO_ERROR
-      FATAL_ERROR
-      INV_DATA_RANGE
-      DIM_MISMATCH_VKEY
-      DIM_MISMATCH_SEMA
-      ERROR_IN_SEMA .
-  methods BIND_TABLE
-    importing
-      !IP_TABLE type STANDARD TABLE
-      !IT_FIELD_CATALOG type ZEXCEL_T_FIELDCATALOG optional
-      !IS_TABLE_SETTINGS type ZEXCEL_S_TABLE_SETTINGS optional
-    exporting
-      !ES_TABLE_SETTINGS type ZEXCEL_S_TABLE_SETTINGS
-    raising
-      ZCX_EXCEL .
-  methods CALCULATE_COLUMN_WIDTHS
-    raising
-      ZCX_EXCEL .
-  methods CHANGE_CELL_STYLE
-    importing
-      !IP_COLUMN type SIMPLE
-      !IP_ROW type ZEXCEL_CELL_ROW
-      !IP_COMPLETE type ZEXCEL_S_CSTYLE_COMPLETE optional
-      !IP_XCOMPLETE type ZEXCEL_S_CSTYLEX_COMPLETE optional
-      !IP_FONT type ZEXCEL_S_CSTYLE_FONT optional
-      !IP_XFONT type ZEXCEL_S_CSTYLEX_FONT optional
-      !IP_FILL type ZEXCEL_S_CSTYLE_FILL optional
-      !IP_XFILL type ZEXCEL_S_CSTYLEX_FILL optional
-      !IP_BORDERS type ZEXCEL_S_CSTYLE_BORDERS optional
-      !IP_XBORDERS type ZEXCEL_S_CSTYLEX_BORDERS optional
-      !IP_ALIGNMENT type ZEXCEL_S_CSTYLE_ALIGNMENT optional
-      !IP_XALIGNMENT type ZEXCEL_S_CSTYLEX_ALIGNMENT optional
-      !IP_NUMBER_FORMAT_FORMAT_CODE type ZEXCEL_NUMBER_FORMAT optional
-      !IP_PROTECTION type ZEXCEL_S_CSTYLE_PROTECTION optional
-      !IP_XPROTECTION type ZEXCEL_S_CSTYLEX_PROTECTION optional
-      !IP_FONT_BOLD type FLAG optional
-      !IP_FONT_COLOR type ZEXCEL_S_STYLE_COLOR optional
-      !IP_FONT_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional
-      !IP_FONT_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional
-      !IP_FONT_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional
-      !IP_FONT_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional
-      !IP_FONT_FAMILY type ZEXCEL_STYLE_FONT_FAMILY optional
-      !IP_FONT_ITALIC type FLAG optional
-      !IP_FONT_NAME type ZEXCEL_STYLE_FONT_NAME optional
-      !IP_FONT_SCHEME type ZEXCEL_STYLE_FONT_SCHEME optional
-      !IP_FONT_SIZE type ZEXCEL_STYLE_FONT_SIZE optional
-      !IP_FONT_STRIKETHROUGH type FLAG optional
-      !IP_FONT_UNDERLINE type FLAG optional
-      !IP_FONT_UNDERLINE_MODE type ZEXCEL_STYLE_FONT_UNDERLINE optional
-      !IP_FILL_FILLTYPE type ZEXCEL_FILL_TYPE optional
-      !IP_FILL_ROTATION type ZEXCEL_ROTATION optional
-      !IP_FILL_FGCOLOR type ZEXCEL_S_STYLE_COLOR optional
-      !IP_FILL_FGCOLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional
-      !IP_FILL_FGCOLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional
-      !IP_FILL_FGCOLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional
-      !IP_FILL_FGCOLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional
-      !IP_FILL_BGCOLOR type ZEXCEL_S_STYLE_COLOR optional
-      !IP_FILL_BGCOLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional
-      !IP_FILL_BGCOLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional
-      !IP_FILL_BGCOLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional
-      !IP_FILL_BGCOLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional
-      !IP_BORDERS_ALLBORDERS type ZEXCEL_S_CSTYLE_BORDER optional
-      !IP_XBORDERS_ALLBORDERS type ZEXCEL_S_CSTYLEX_BORDER optional
-      !IP_BORDERS_DIAGONAL type ZEXCEL_S_CSTYLE_BORDER optional
-      !IP_XBORDERS_DIAGONAL type ZEXCEL_S_CSTYLEX_BORDER optional
-      !IP_BORDERS_DIAGONAL_MODE type ZEXCEL_DIAGONAL optional
-      !IP_BORDERS_DOWN type ZEXCEL_S_CSTYLE_BORDER optional
-      !IP_XBORDERS_DOWN type ZEXCEL_S_CSTYLEX_BORDER optional
-      !IP_BORDERS_LEFT type ZEXCEL_S_CSTYLE_BORDER optional
-      !IP_XBORDERS_LEFT type ZEXCEL_S_CSTYLEX_BORDER optional
-      !IP_BORDERS_RIGHT type ZEXCEL_S_CSTYLE_BORDER optional
-      !IP_XBORDERS_RIGHT type ZEXCEL_S_CSTYLEX_BORDER optional
-      !IP_BORDERS_TOP type ZEXCEL_S_CSTYLE_BORDER optional
-      !IP_XBORDERS_TOP type ZEXCEL_S_CSTYLEX_BORDER optional
-      !IP_ALIGNMENT_HORIZONTAL type ZEXCEL_ALIGNMENT optional
-      !IP_ALIGNMENT_VERTICAL type ZEXCEL_ALIGNMENT optional
-      !IP_ALIGNMENT_TEXTROTATION type ZEXCEL_TEXT_ROTATION optional
-      !IP_ALIGNMENT_WRAPTEXT type FLAG optional
-      !IP_ALIGNMENT_SHRINKTOFIT type FLAG optional
-      !IP_ALIGNMENT_INDENT type ZEXCEL_INDENT optional
-      !IP_PROTECTION_HIDDEN type ZEXCEL_CELL_PROTECTION optional
-      !IP_PROTECTION_LOCKED type ZEXCEL_CELL_PROTECTION optional
-      !IP_BORDERS_ALLBORDERS_STYLE type ZEXCEL_BORDER optional
-      !IP_BORDERS_ALLBORDERS_COLOR type ZEXCEL_S_STYLE_COLOR optional
-      !IP_BORDERS_ALLBO_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional
-      !IP_BORDERS_ALLBO_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional
-      !IP_BORDERS_ALLBO_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional
-      !IP_BORDERS_ALLBO_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional
-      !IP_BORDERS_DIAGONAL_STYLE type ZEXCEL_BORDER optional
-      !IP_BORDERS_DIAGONAL_COLOR type ZEXCEL_S_STYLE_COLOR optional
-      !IP_BORDERS_DIAGONAL_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional
-      !IP_BORDERS_DIAGONAL_COLOR_INDE type ZEXCEL_STYLE_COLOR_INDEXED optional
-      !IP_BORDERS_DIAGONAL_COLOR_THEM type ZEXCEL_STYLE_COLOR_THEME optional
-      !IP_BORDERS_DIAGONAL_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional
-      !IP_BORDERS_DOWN_STYLE type ZEXCEL_BORDER optional
-      !IP_BORDERS_DOWN_COLOR type ZEXCEL_S_STYLE_COLOR optional
-      !IP_BORDERS_DOWN_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional
-      !IP_BORDERS_DOWN_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional
-      !IP_BORDERS_DOWN_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional
-      !IP_BORDERS_DOWN_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional
-      !IP_BORDERS_LEFT_STYLE type ZEXCEL_BORDER optional
-      !IP_BORDERS_LEFT_COLOR type ZEXCEL_S_STYLE_COLOR optional
-      !IP_BORDERS_LEFT_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional
-      !IP_BORDERS_LEFT_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional
-      !IP_BORDERS_LEFT_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional
-      !IP_BORDERS_LEFT_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional
-      !IP_BORDERS_RIGHT_STYLE type ZEXCEL_BORDER optional
-      !IP_BORDERS_RIGHT_COLOR type ZEXCEL_S_STYLE_COLOR optional
-      !IP_BORDERS_RIGHT_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional
-      !IP_BORDERS_RIGHT_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional
-      !IP_BORDERS_RIGHT_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional
-      !IP_BORDERS_RIGHT_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional
-      !IP_BORDERS_TOP_STYLE type ZEXCEL_BORDER optional
-      !IP_BORDERS_TOP_COLOR type ZEXCEL_S_STYLE_COLOR optional
-      !IP_BORDERS_TOP_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional
-      !IP_BORDERS_TOP_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional
-      !IP_BORDERS_TOP_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional
-      !IP_BORDERS_TOP_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional
-    returning
-      value(EP_GUID) type ZEXCEL_CELL_STYLE
-    raising
-      ZCX_EXCEL .
-  methods CONSTRUCTOR
-    importing
-      !IP_EXCEL type ref to ZCL_EXCEL
-      !IP_TITLE type ZEXCEL_SHEET_TITLE optional
-    raising
-      ZCX_EXCEL .
-  methods DELETE_MERGE .
-  methods FREEZE_PANES
-    importing
-      !IP_NUM_COLUMNS type I optional
-      !IP_NUM_ROWS type I optional
-    raising
-      ZCX_EXCEL .
-  methods GET_ACTIVE_CELL
-    returning
-      value(EP_ACTIVE_CELL) type STRING
-    raising
-      ZCX_EXCEL .
-  methods GET_CELL
-    importing
-      !IP_COLUMN type SIMPLE
-      !IP_ROW type ZEXCEL_CELL_ROW
-    exporting
-      !EP_VALUE type ZEXCEL_CELL_VALUE
-      !EP_RC type SYSUBRC
-      !EP_STYLE type ref to ZCL_EXCEL_STYLE
-      !EP_GUID type ZEXCEL_CELL_STYLE
-    raising
-      ZCX_EXCEL .
-  methods GET_COLUMN_DIMENSION
-    importing
-      !IP_COLUMN type SIMPLE
-    returning
-      value(R_COLUMN_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME
-    raising
-      ZCX_EXCEL .
-  methods GET_COLUMN_DIMENSIONS
-    returning
-      value(R_COLUMN_DIMENSION) type ZEXCEL_T_WORKSHEET_COLUMNDIME .
-  methods GET_COND_STYLES_ITERATOR
-    returning
-      value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR .
-  methods GET_DATA_VALIDATIONS_ITERATOR
-    returning
-      value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR .
-  methods GET_DATA_VALIDATIONS_SIZE
-    returning
-      value(EP_SIZE) type I .
-  methods GET_DEFAULT_COLUMN_DIMENSION
-    returning
-      value(R_COLUMN_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME .
-  methods GET_DEFAULT_EXCEL_DATE_FORMAT
-    returning
-      value(EP_DEFAULT_EXCEL_DATE_FORMAT) type ZEXCEL_NUMBER_FORMAT .
-  methods GET_DEFAULT_EXCEL_TIME_FORMAT
-    returning
-      value(EP_DEFAULT_EXCEL_TIME_FORMAT) type ZEXCEL_NUMBER_FORMAT .
-  methods GET_DEFAULT_ROW_DIMENSION
-    returning
-      value(R_ROW_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI .
-  methods GET_DIMENSION_RANGE
-    returning
-      value(EP_DIMENSION_RANGE) type STRING
-    raising
-      ZCX_EXCEL .
-  methods GET_DRAWINGS
-    importing
-      !IP_TYPE type ZEXCEL_DRAWING_TYPE optional
-    returning
-      value(R_DRAWINGS) type ref to ZCL_EXCEL_DRAWINGS .
-  methods GET_DRAWINGS_ITERATOR
-    importing
-      !IP_TYPE type ZEXCEL_DRAWING_TYPE
-    returning
-      value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR .
-  methods GET_FREEZE_CELL
-    exporting
-      !EP_ROW type ZEXCEL_CELL_ROW
-      !EP_COLUMN type ZEXCEL_CELL_COLUMN .
-  methods GET_GUID
-    returning
-      value(EP_GUID) type OLTPGUID16 .
-  methods GET_HIGHEST_COLUMN
-    returning
-      value(R_HIGHEST_COLUMN) type ZEXCEL_CELL_COLUMN
-    raising
-      ZCX_EXCEL .
-  methods GET_HIGHEST_ROW
-    returning
-      value(R_HIGHEST_ROW) type INT4
-    raising
-      ZCX_EXCEL .
-  methods GET_HYPERLINKS_ITERATOR
-    returning
-      value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR .
-  methods GET_HYPERLINKS_SIZE
-    returning
-      value(EP_SIZE) type I .
-  methods GET_MERGE
-    returning
-      value(MERGE_RANGE) type STRING_TABLE
-    raising
-      ZCX_EXCEL .
-  methods GET_RANGES_ITERATOR
-    returning
-      value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR .
-  methods GET_ROW_DIMENSION
-    importing
-      !IP_ROW type INT4
-    returning
-      value(R_ROW_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI .
-  methods GET_ROW_DIMENSIONS
-    returning
-      value(R_ROW_DIMENSION) type ZEXCEL_T_WORKSHEET_ROWDIMENSIO .
-  methods GET_TABCOLOR
-    returning
-      value(EV_TABCOLOR) type ZEXCEL_S_TABCOLOR .
-  methods GET_TABLES_ITERATOR
-    returning
-      value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR .
-  methods GET_TABLES_SIZE
-    returning
-      value(EP_SIZE) type I .
-  methods GET_TITLE
-    importing
-      !IP_ESCAPED type FLAG default &apos;&apos;
-    returning
-      value(EP_TITLE) type ZEXCEL_SHEET_TITLE .
-  methods SET_CELL
-    importing
-      !IP_COLUMN type SIMPLE
-      !IP_ROW type ZEXCEL_CELL_ROW
-      !IP_VALUE type SIMPLE optional
-      !IP_FORMULA type ZEXCEL_CELL_FORMULA optional
-      !IP_STYLE type ZEXCEL_CELL_STYLE optional
-      !IP_HYPERLINK type ref to ZCL_EXCEL_HYPERLINK optional
-      !IP_DATA_TYPE type ZEXCEL_CELL_DATA_TYPE optional
-      !IP_ABAP_TYPE type ABAP_TYPEKIND optional
-    raising
-      ZCX_EXCEL .
-  methods SET_CELL_STYLE
-    importing
-      !IP_COLUMN type SIMPLE
-      !IP_ROW type ZEXCEL_CELL_ROW
-      !IP_STYLE type ZEXCEL_CELL_STYLE
-    raising
-      ZCX_EXCEL .
-  methods SET_COLUMN_WIDTH
-    importing
-      !IP_COLUMN type SIMPLE
-      !IP_WIDTH_FIX type SIMPLE default 0
-      !IP_WIDTH_AUTOSIZE type FLAG default &apos;X&apos;
-    raising
-      ZCX_EXCEL .
-  methods SET_DEFAULT_EXCEL_DATE_FORMAT
-    importing
-      !IP_DEFAULT_EXCEL_DATE_FORMAT type ZEXCEL_NUMBER_FORMAT
-    raising
-      ZCX_EXCEL .
-  methods SET_MERGE
-    importing
-      !IP_COLUMN_START type ZEXCEL_CELL_COLUMN_ALPHA optional
-      !IP_COLUMN_END type ZEXCEL_CELL_COLUMN_ALPHA optional
-      !IP_ROW type ZEXCEL_CELL_ROW optional
-      !IP_ROW_TO type ZEXCEL_CELL_ROW optional
-    raising
-      ZCX_EXCEL .
-  methods SET_PRINT_GRIDLINES
-    importing
-      !I_PRINT_GRIDLINES type ZEXCEL_PRINT_GRIDLINES .
-  methods SET_ROW_HEIGHT
-    importing
-      !IP_ROW type SIMPLE
-      !IP_HEIGHT_FIX type SIMPLE
-    raising
-      ZCX_EXCEL .
-  methods SET_SHOW_GRIDLINES
-    importing
-      !I_SHOW_GRIDLINES type ZEXCEL_SHOW_GRIDLINES .
-  methods SET_SHOW_ROWCOLHEADERS
-    importing
-      !I_SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_ROWCOLHEADER .
-  methods SET_TABCOLOR
-    importing
-      !IV_TABCOLOR type ZEXCEL_S_TABCOLOR .
-  methods SET_TABLE
-    importing
-      !IP_TABLE type STANDARD TABLE
-      !IP_HDR_STYLE type ZEXCEL_CELL_STYLE optional
-      !IP_BODY_STYLE type ZEXCEL_CELL_STYLE optional
-      !IP_TABLE_TITLE type STRING
-      !IP_TOP_LEFT_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA default &apos;B&apos;
-      !IP_TOP_LEFT_ROW type ZEXCEL_CELL_ROW default 3
-      !IP_TRANSPOSE type XFELD optional
-      !IP_NO_HEADER type XFELD optional
-    raising
-      ZCX_EXCEL .
-  methods SET_TITLE
-    importing
-      !IP_TITLE type ZEXCEL_SHEET_TITLE
-    raising
-      ZCX_EXCEL .</publicSection>
- <protectedSection>*&quot;* protected components of class ZCL_EXCEL_WORKSHEET
-*&quot;* do not include other source files here!!!
-protected section.</protectedSection>
- <privateSection>*&quot;* private components of class ZCL_EXCEL_WORKSHEET
-*&quot;* do not include other source files here!!!
-private section.
-
-  data ACTIVE_CELL type ZEXCEL_S_CELL_DATA .
-  data CHARTS type ref to ZCL_EXCEL_DRAWINGS .
-  data COLUMN_DIMENSIONS type ZEXCEL_T_WORKSHEET_COLUMNDIME .
-  data CONDITIONAL_STYLES type ref to ZCL_EXCEL_STYLES_CONDITIONAL .
-  data DATA_VALIDATIONS type ref to ZCL_EXCEL_DATA_VALIDATIONS .
-  data DEFAULT_COLUMN_DIMENSION type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME .
-  data DEFAULT_EXCEL_DATE_FORMAT type ZEXCEL_NUMBER_FORMAT .
-  data DEFAULT_EXCEL_TIME_FORMAT type ZEXCEL_NUMBER_FORMAT .
-  data DEFAULT_ROW_DIMENSION type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI .
-  data DRAWINGS type ref to ZCL_EXCEL_DRAWINGS .
-  data FREEZE_PANE_CELL_COLUMN type ZEXCEL_CELL_COLUMN .
-  data FREEZE_PANE_CELL_ROW type ZEXCEL_CELL_ROW .
-  data GUID type OLTPGUID16 .
-  data HYPERLINKS type ref to CL_OBJECT_COLLECTION .
-  data LOWER_CELL type ZEXCEL_S_CELL_DATA .
-  data RANGES type ref to ZCL_EXCEL_RANGES .
-  data ROW_DIMENSIONS type ZEXCEL_T_WORKSHEET_ROWDIMENSIO .
-  data TABLES type ref to CL_OBJECT_COLLECTION .
-  data TITLE type ZEXCEL_SHEET_TITLE value &apos;Worksheet&apos;. &quot;#EC NOTEXT .
-  data UPPER_CELL type ZEXCEL_S_CELL_DATA .
-  data PRINT_TITLE_COL_FROM type ZEXCEL_CELL_COLUMN_ALPHA .
-  data PRINT_TITLE_COL_TO type ZEXCEL_CELL_COLUMN_ALPHA .
-  data PRINT_TITLE_ROW_FROM type ZEXCEL_CELL_ROW .
-  data PRINT_TITLE_ROW_TO type ZEXCEL_CELL_ROW .
-
-  methods CALCULATE_CELL_WIDTH
-    importing
-      !IP_COLUMN type SIMPLE
-      !IP_ROW type ZEXCEL_CELL_ROW
-    returning
-      value(EP_WIDTH) type I
-    raising
-      ZCX_EXCEL .
-  methods GENERATE_TITLE
-    returning
-      value(EP_TITLE) type ZEXCEL_SHEET_TITLE .
-  methods GET_VALUE_TYPE
-    importing
-      !IP_VALUE type SIMPLE
-    exporting
-      !EP_VALUE type SIMPLE
-      !EP_VALUE_TYPE type ABAP_TYPEKIND .
-  methods UPDATE_DIMENSION_RANGE
-    raising
-      ZCX_EXCEL .
-  methods PRINT_TITLE_SET_RANGE .</privateSection>
- <localImplementation>*&quot;* local class implementation for public class
-*&quot;* use this source file for the implementation part of
-*&quot;* local helper classes
-
-*&amp;---------------------------------------------------------------------*
-*&amp;       Class (Implementation)  C_OI_PROXY_ERROR
-*&amp;---------------------------------------------------------------------*
-CLASS C_OI_PROXY_ERROR IMPLEMENTATION.
-  method constructor.
-*                IMPORTING object_name TYPE c
-*                          method_name TYPE c.
-    error_nr = ret_call_not_flushed.
-    me-&gt;i_oi_error~error_code = c_oi_errors=&gt;ret_call_not_flushed.
-    me-&gt;i_oi_error~is_flushed = &apos; &apos;.
-    me-&gt;i_oi_error~has_failed = &apos;X&apos;.
-    me-&gt;i_oi_error~has_succeeded = &apos; &apos;.
-    me-&gt;message_id = &apos;SOFFICEINTEGRATION&apos;.
-    me-&gt;message_nr = &apos;899&apos;.
-    me-&gt;param1 = object_name.
-    me-&gt;param2 = method_name.
-  endmethod.                    &quot;constructor
-
-  method i_oi_error~flush_error.
-    if error_nr eq 0.
-      me-&gt;i_oi_error~error_code = c_oi_errors=&gt;ret_ok.
-      me-&gt;i_oi_error~is_flushed = &apos;X&apos;.
-      me-&gt;i_oi_error~has_failed = &apos; &apos;.
-      me-&gt;i_oi_error~has_succeeded = &apos;X&apos;.
-      me-&gt;message_id = &apos;&apos;.
-      me-&gt;message_nr = &apos;000&apos;.
-      call method c_oi_errors=&gt;translate_proxy_error_code
-        EXPORTING
-          errorcode = error_nr
-        IMPORTING
-          retcode   = me-&gt;i_oi_error~error_code.
-    elseif error_nr eq ret_call_not_flushed.
-      &quot;call still not flushed
-      call method c_oi_errors=&gt;translate_proxy_error_code
-        EXPORTING
-          errorcode   = error_nr
-          errorstring = me-&gt;param2  &quot;method name
-          objectname  = me-&gt;param1
-        IMPORTING
-          retcode     = me-&gt;i_oi_error~error_code.
-    else.
-      me-&gt;i_oi_error~is_flushed = &apos;X&apos;.
-      me-&gt;i_oi_error~has_succeeded = &apos; &apos;.
-      me-&gt;i_oi_error~has_failed = &apos;X&apos;.
-      call method c_oi_errors=&gt;translate_proxy_error_code
-        EXPORTING
-          errorcode   = error_nr
-          errorstring = error_string
-        IMPORTING
-          retcode     = me-&gt;i_oi_error~error_code.
-      call method c_oi_errors=&gt;get_message
-        IMPORTING
-          message_id     = me-&gt;message_id
-          message_number = me-&gt;message_nr
-          param1         = me-&gt;param1
-          param2         = me-&gt;param2
-          param3         = me-&gt;param3
-          param4         = me-&gt;param4.
-    endif.
-  endmethod.                    &quot;i_oi_error~flush_error
-
-  method i_oi_error~raise_message.
-*                         IMPORTING type TYPE c.
-*                         EXCEPTIONS message_raised flush_failed.
-    if me-&gt;i_oi_error~has_succeeded is initial.
-      if not me-&gt;i_oi_error~is_flushed is initial.
-        message id message_id type type
-            number message_nr with param1 param2 param3 param4
-            raising message_raised.
-      else.
-        raise flush_failed.
-      endif.
-    endif.
-  endmethod.                    &quot;i_oi_error~raise_message
-
-  method i_oi_error~get_message.
-*                    EXPORTING message_id TYPE c
-*                              message_number TYPE c
-*                              param1 TYPE c
-*                              param2 TYPE c
-*                              param3 TYPE c
-*                              param4 TYPE c.
-    param1 = me-&gt;param1. param2 = me-&gt;param2.
-    param3 = me-&gt;param3. param4 = me-&gt;param4.
-
-    message_id = me-&gt;message_id.
-    message_number = me-&gt;message_nr.
-  endmethod.                    &quot;i_oi_error~get_message
-ENDCLASS.               &quot;C_OI_PROXY_ERROR
-
-*&amp;---------------------------------------------------------------------*
-*&amp;       Class (Implementation)  CL_GRID_ACCESSION
-*&amp;---------------------------------------------------------------------*
-CLASS lcl_gui_alv_grid IMPLEMENTATION.
-
-  method get_alv_attributes.
-    create data et_table like io_grid-&gt;mt_outtab.
-    et_table = io_grid-&gt;mt_outtab.
-  endmethod.                    &quot;get_data
-
-ENDCLASS.               &quot;CL_GRID_ACCESSION</localImplementation>
- <localTypes>*&quot;* use this source file for any type declarations (class
-*&quot;* definitions, interfaces or data types) you need for method
-*&quot;* implementation or private method&apos;s signature
-type-pools: SYDES.
-type-pools: SLIS.
-*--------------------------------------------------------------------*
-* CLASS c_oi_proxy_error
-*--------------------------------------------------------------------*
-* use for method bind_ALV
-*--------------------------------------------------------------------*
-class c_oi_proxy_error definition.
-  public section.
-    interfaces: i_oi_error.
-    data: error_nr type i.
-    data: error_string type sy-msgv1.
-
-    methods: constructor importing object_name type c
-                                   method_name type c.
-  private section.
-    constants:
-          ret_call_not_flushed        type i value -999999.
-
-    data: message_id type sy-msgid,
-          message_nr type sy-msgno,
-          param1 type sy-msgv1,
-          param2 type sy-msgv2,
-          param3 type sy-msgv3,
-          param4 type sy-msgv4.
-endclass.
-
-*--------------------------------------------------------------------*
-* CLASS lcl_gui_alv_grid
-*--------------------------------------------------------------------*
-* to get protected attribute and method of cl_gui_alv_grid
-* use for method bind_ALV
-*--------------------------------------------------------------------*
-class lcl_gui_alv_grid definition inheriting from cl_gui_alv_grid.
-
-  public section.
-* get ALV grid data
-    methods: get_alv_attributes
-      importing
-        Io_grid   type ref to cl_gui_alv_grid &quot; ALV grid
-      exporting
-        ET_table  type ref to data.           &quot; dta table
-
-endclass.</localTypes>
- <localMacros>*&quot;* use this source file for any macro definitions you need
-*&quot;* in the implementation part of the class</localMacros>
- <textPool>
-  <language SPRAS="D">
-   <textElement ID="I" KEY="001" ENTRY="Tabelle" LENGTH="132 "/>
-   <textElement ID="I" KEY="400" ENTRY="Tabelle überschneidet sich mit schon eingebundener Tabelle und wird diesem Tabellenblatt nicht hinzugefügt." LENGTH="132 "/>
-   <textElement ID="I" KEY="401" ENTRY="Für Druckbereich Wiederholungsspalten wurde ein ungültiger Bereich übergeben" LENGTH="132 "/>
-  </language>
-  <language SPRAS="E">
-   <textElement ID="I" KEY="001" ENTRY="Sheet" LENGTH="132 "/>
-   <textElement ID="I" KEY="400" ENTRY="Table overlaps with previously bound table and will not be added to worksheet." LENGTH="132 "/>
-   <textElement ID="I" KEY="401" ENTRY="Invalid range supplied for print-title repeatable columns" LENGTH="132 "/>
-  </language>
- </textPool>
- <typeUsage CLSNAME="ZCL_EXCEL_WORKSHEET" TYPEGROUP="ABAP" VERSION="1" TPUTYPE="0" EXPLICIT="X"/>
- <typeUsage CLSNAME="ZCL_EXCEL_WORKSHEET" TYPEGROUP="SLIS" VERSION="1" TPUTYPE="0" IMPLICIT="X"/>
- <typeUsage CLSNAME="ZCL_EXCEL_WORKSHEET" TYPEGROUP="SOI" VERSION="1" TPUTYPE="0" IMPLICIT="X"/>
- <forwardDeclaration>ABAP</forwardDeclaration>
- <forwardDeclaration>SLIS</forwardDeclaration>
- <forwardDeclaration>SOI</forwardDeclaration>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ACTIVE_CELL" VERSION="1" LANGU="E" DESCRIPT="Version Number Component" EXPOSURE="0" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_S_CELL_DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHARTS" VERSION="1" LANGU="E" DESCRIPT="Charts collection" EXPOSURE="0" STATE="1" EDITORDER="2 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_DRAWINGS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="COLUMN_DIMENSIONS" VERSION="1" LANGU="E" DESCRIPT="Collection of column dimensions" EXPOSURE="0" STATE="1" EDITORDER="3 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_WORKSHEET_COLUMNDIME" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CONDITIONAL_STYLES" VERSION="1" LANGU="E" DESCRIPT="Styles conditional collection" EXPOSURE="0" STATE="1" EDITORDER="4 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_STYLES_CONDITIONAL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="C_BREAK_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Worksheet Break" EXPOSURE="2" STATE="1" EDITORDER="5 " ATTDECLTYP="2" ATTVALUE="2" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_BREAK" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="C_BREAK_NONE" VERSION="1" LANGU="E" DESCRIPT="Worksheet Break" EXPOSURE="2" STATE="1" EDITORDER="6 " ATTDECLTYP="2" ATTVALUE="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_BREAK" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="C_BREAK_ROW" VERSION="1" LANGU="E" DESCRIPT="Worksheet Break" EXPOSURE="2" STATE="1" EDITORDER="7 " ATTDECLTYP="2" ATTVALUE="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_BREAK" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="DATA_VALIDATIONS" VERSION="1" LANGU="E" DESCRIPT="Data validations collection" EXPOSURE="0" STATE="1" EDITORDER="8 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_DATA_VALIDATIONS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="DEFAULT_COLUMN_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Worksheet ColumnDimension" EXPOSURE="0" STATE="1" EDITORDER="9 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET_COLUMNDIME" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="DEFAULT_EXCEL_DATE_FORMAT" VERSION="1" LANGU="E" DESCRIPT="Date format used in case style is not provide for D fields" EXPOSURE="0" STATE="1" EDITORDER="10 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_NUMBER_FORMAT" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="DEFAULT_EXCEL_TIME_FORMAT" VERSION="1" LANGU="E" DESCRIPT="Date format used in case style is not provide for D fields" EXPOSURE="0" STATE="1" EDITORDER="11 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_NUMBER_FORMAT" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="DEFAULT_ROW_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Worksheet RowDimension" EXPOSURE="0" STATE="1" EDITORDER="12 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET_ROWDIMENSI" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="DRAWINGS" VERSION="1" LANGU="E" DESCRIPT="Drawings collection" EXPOSURE="0" STATE="1" EDITORDER="13 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_DRAWINGS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="EXCEL" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="14 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="FREEZE_PANE_CELL_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" EXPOSURE="0" STATE="1" EDITORDER="15 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="FREEZE_PANE_CELL_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" EXPOSURE="0" STATE="1" EDITORDER="16 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GUID" VERSION="1" LANGU="E" DESCRIPT="GUID in &apos;RAW&apos; format" EXPOSURE="0" STATE="1" EDITORDER="17 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="OLTPGUID16" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="HYPERLINKS" VERSION="1" LANGU="E" DESCRIPT="Colletion of hyperlinks" EXPOSURE="0" STATE="1" EDITORDER="18 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="LOWER_CELL" VERSION="1" LANGU="E" DESCRIPT="Bottom right range cell" EXPOSURE="0" STATE="1" EDITORDER="19 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_S_CELL_DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="PRINT_GRIDLINES" VERSION="1" LANGU="E" DESCRIPT="Print Gridlines" EXPOSURE="2" STATE="1" EDITORDER="20 " ATTDECLTYP="0" ATTRDONLY="X" ATTVALUE="ABAP_FALSE" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_PRINT_GRIDLINES" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="PRINT_TITLE_COL_FROM" VERSION="1" LANGU="E" DESCRIPT="Cell Column" EXPOSURE="0" STATE="1" EDITORDER="33 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="PRINT_TITLE_COL_TO" VERSION="1" LANGU="E" DESCRIPT="Cell Column" EXPOSURE="0" STATE="1" EDITORDER="34 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="PRINT_TITLE_ROW_FROM" VERSION="1" LANGU="E" DESCRIPT="Cell Row" EXPOSURE="0" STATE="1" EDITORDER="35 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="PRINT_TITLE_ROW_TO" VERSION="1" LANGU="E" DESCRIPT="Cell Row" EXPOSURE="0" STATE="1" EDITORDER="36 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="RANGES" VERSION="1" LANGU="E" DESCRIPT="Ranges collection" EXPOSURE="0" STATE="1" EDITORDER="21 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_RANGES" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ROW_DIMENSIONS" VERSION="1" LANGU="E" DESCRIPT="Collection of row dimensions" EXPOSURE="0" STATE="1" EDITORDER="22 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_WORKSHEET_ROWDIMENSIO" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SHEET_CONTENT" VERSION="1" LANGU="E" DESCRIPT="Excel worksheet content" EXPOSURE="2" STATE="1" EDITORDER="23 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_CELL_DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SHEET_CONTENT_MERGE" VERSION="1" LANGU="E" DESCRIPT="Excel worksheet content" EXPOSURE="2" STATE="1" EDITORDER="24 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_CELL_DATA_UNSORTED" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SHEET_SETUP" VERSION="1" LANGU="E" DESCRIPT="Sheet setup" EXPOSURE="2" STATE="1" EDITORDER="25 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_SHEET_SETUP" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SHOW_GRIDLINES" VERSION="1" LANGU="E" DESCRIPT="Show Gridlines" EXPOSURE="2" STATE="1" EDITORDER="26 " ATTDECLTYP="0" ATTRDONLY="X" ATTVALUE="ABAP_TRUE" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_SHOW_GRIDLINES" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SHOW_ROWCOLHEADERS" VERSION="1" LANGU="E" DESCRIPT="Show Gridlines" EXPOSURE="2" STATE="1" EDITORDER="27 " ATTDECLTYP="0" ATTRDONLY="X" ATTVALUE="ABAP_TRUE" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_SHOW_GRIDLINES" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="STYLES" VERSION="1" LANGU="E" DESCRIPT="Sheet style table type" EXPOSURE="2" STATE="1" EDITORDER="28 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_SHEET_STYLE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="TABCOLOR" VERSION="1" LANGU="E" DESCRIPT="Tabcolor" EXPOSURE="2" STATE="1" EDITORDER="29 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_S_TABCOLOR" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="TABLES" VERSION="1" LANGU="E" DESCRIPT="Colletion of tables" EXPOSURE="0" STATE="1" EDITORDER="30 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="TITLE" VERSION="1" LANGU="E" DESCRIPT="Title" EXPOSURE="0" STATE="1" EDITORDER="31 " ATTDECLTYP="0" ATTVALUE="&apos;Worksheet&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_SHEET_TITLE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="UPPER_CELL" VERSION="1" LANGU="E" DESCRIPT="Top left range cell" EXPOSURE="0" STATE="1" EDITORDER="32 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_S_CELL_DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS">
-  <source>METHOD zif_excel_sheet_printsettings~clear_print_repeat_columns.
-
-*--------------------------------------------------------------------*
-* adjust internal representation
-*--------------------------------------------------------------------*
-  clear:  me-&gt;print_title_col_from,
-          me-&gt;print_title_col_to  .
-
-
-*--------------------------------------------------------------------*
-* adjust corresponding range
-*--------------------------------------------------------------------*
-  me-&gt;print_title_set_range( ).
-
-
-ENDMETHOD.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS">
-  <source>METHOD zif_excel_sheet_printsettings~clear_print_repeat_rows.
-
-*--------------------------------------------------------------------*
-* adjust internal representation
-*--------------------------------------------------------------------*
-  clear:  me-&gt;print_title_row_from,
-          me-&gt;print_title_row_to  .
-
-
-*--------------------------------------------------------------------*
-* adjust corresponding range
-*--------------------------------------------------------------------*
-  me-&gt;print_title_set_range( ).
-
-
-ENDMETHOD.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS">
-  <source>METHOD zif_excel_sheet_printsettings~get_print_repeat_columns.
-ENDMETHOD.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS">
-  <source>METHOD zif_excel_sheet_printsettings~get_print_repeat_rows.
-ENDMETHOD.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS~SET_PRINT_REPEAT_COLUMNS">
-  <source>METHOD zif_excel_sheet_printsettings~set_print_repeat_columns.
-*--------------------------------------------------------------------*
-* issue#235 - repeat rows/columns
-*           - Stefan Schmöcker,                             2012-12-02
-*--------------------------------------------------------------------*
-
-  DATA:     lv_col_from_int                 TYPE i,
-            lv_col_to_int                   TYPE i,
-            lv_errormessage                 TYPE string.
-
-  DATA:     lo_range_iterator               TYPE REF TO cl_object_collection_iterator,
-            lo_range                        TYPE REF TO zcl_excel_range.
-
-
-  lv_col_from_int = zcl_excel_common=&gt;convert_column2int( iv_columns_from ).
-  lv_col_to_int   = zcl_excel_common=&gt;convert_column2int( iv_columns_to ).
-
-*--------------------------------------------------------------------*
-* Check if valid range is supplied
-*--------------------------------------------------------------------*
-  IF lv_col_from_int &lt; 1.
-    lv_errormessage = &apos;Invalid range supplied for print-title repeatable columns&apos;(401).
-    RAISE EXCEPTION TYPE zcx_excel
-      EXPORTING
-        error = lv_errormessage.
-  ENDIF.
-
-  IF  lv_col_from_int &gt; lv_col_to_int.
-    lv_errormessage = &apos;Invalid range supplied for print-title repeatable columns&apos;(401).
-    RAISE EXCEPTION TYPE zcx_excel
-      EXPORTING
-        error = lv_errormessage.
-  ENDIF.
-
-*--------------------------------------------------------------------*
-* adjust internal representation
-*--------------------------------------------------------------------*
-  me-&gt;print_title_col_from = iv_columns_from.
-  me-&gt;print_title_col_to   = iv_columns_to.
-
-
-*--------------------------------------------------------------------*
-* adjust corresponding range
-*--------------------------------------------------------------------*
-  me-&gt;print_title_set_range( ).
-
-ENDMETHOD.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS~SET_PRINT_REPEAT_ROWS">
-  <source>METHOD zif_excel_sheet_printsettings~set_print_repeat_rows.
-*--------------------------------------------------------------------*
-* issue#235 - repeat rows/columns
-*           - Stefan Schmöcker,                             2012-12-02
-*--------------------------------------------------------------------*
-
-  DATA:     lv_errormessage                 TYPE string.
-
-  DATA:     lo_range_iterator               TYPE REF TO cl_object_collection_iterator,
-            lo_range                        TYPE REF TO zcl_excel_range.
-
-
-
-*--------------------------------------------------------------------*
-* Check if valid range is supplied
-*--------------------------------------------------------------------*
-  IF iv_rows_from &lt; 1.
-    lv_errormessage = &apos;Invalid range supplied for print-title repeatable rowumns&apos;(401).
-    RAISE EXCEPTION TYPE zcx_excel
-      EXPORTING
-        error = lv_errormessage.
-  ENDIF.
-
-  IF  iv_rows_from &gt; iv_rows_to.
-    lv_errormessage = &apos;Invalid range supplied for print-title repeatable rowumns&apos;(401).
-    RAISE EXCEPTION TYPE zcx_excel
-      EXPORTING
-        error = lv_errormessage.
-  ENDIF.
-
-*--------------------------------------------------------------------*
-* adjust internal representation
-*--------------------------------------------------------------------*
-  me-&gt;print_title_row_from = iv_rows_from.
-  me-&gt;print_title_row_to   = iv_rows_to.
-
-
-*--------------------------------------------------------------------*
-* adjust corresponding range
-*--------------------------------------------------------------------*
-  me-&gt;print_title_set_range( ).
-
-
-ENDMETHOD.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PROPERTIES~GET_STYLE">
-  <source>method ZIF_EXCEL_SHEET_PROPERTIES~GET_STYLE.
-  IF zif_excel_sheet_properties~style IS NOT INITIAL.
-    ep_style = zif_excel_sheet_properties~style.
-  ELSE.
-    ep_style = me-&gt;excel-&gt;get_default_style( ).
-  ENDIF.
-endmethod.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE">
-  <source>method ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE.
-
-  zif_excel_sheet_properties~show_zeros   = zif_excel_sheet_properties=&gt;c_showzero.
-  zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=&gt;c_below_on.
-  zif_excel_sheet_properties~summaryright = zif_excel_sheet_properties=&gt;c_right_on.
-
-* inizialize zoomscale values
-  ZIF_EXCEL_SHEET_PROPERTIES~zoomscale = 100.
-  ZIF_EXCEL_SHEET_PROPERTIES~zoomscale_normal = 100.
-  ZIF_EXCEL_SHEET_PROPERTIES~zoomscale_pagelayoutview = 100 .
-  ZIF_EXCEL_SHEET_PROPERTIES~zoomscale_sheetlayoutview = 100 .
-endmethod.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE">
-  <source>method ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE.
-  zif_excel_sheet_properties~style = ip_style.
-endmethod.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE">
-  <source>method ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE.
-
-  me-&gt;zif_excel_sheet_protection~protected = zif_excel_sheet_protection=&gt;c_unprotected.
-  CLEAR me-&gt;zif_excel_sheet_protection~password.
-  me-&gt;zif_excel_sheet_protection~auto_filter            = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~delete_columns         = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~delete_rows            = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~format_cells           = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~format_columns         = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~format_rows            = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~insert_columns         = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~insert_hyperlinks      = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~insert_rows            = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~objects                = zif_excel_sheet_protection=&gt;c_noactive.
-*  me-&gt;zif_excel_sheet_protection~password               = zif_excel_sheet_protection=&gt;c_noactive. &quot;issue #68
-  me-&gt;zif_excel_sheet_protection~pivot_tables           = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~protected              = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~scenarios              = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~select_locked_cells    = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~select_unlocked_cells  = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~sheet                  = zif_excel_sheet_protection=&gt;c_noactive.
-  me-&gt;zif_excel_sheet_protection~sort                   = zif_excel_sheet_protection=&gt;c_noactive.
-
-endmethod.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME">
-  <source>method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME.
-  me-&gt;zif_excel_sheet_vba_project~codename = ip_codename.
-endmethod.</source>
- </interfaceMethod>
- <interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR">
-  <source>method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR.
-  me-&gt;zif_excel_sheet_vba_project~codename_pr = ip_codename_pr.
-endmethod.</source>
- </interfaceMethod>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ADD_DRAWING" VERSION="1" LANGU="E" DESCRIPT="Add drawing to the sheet" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ADD_DRAWING" SCONAME="IP_DRAWING" VERSION="1" LANGU="E" DESCRIPT="Drawing" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_DRAWING"/>
-  <source>method ADD_DRAWING.
-  CASE ip_drawing-&gt;get_type( ).
-    WHEN zcl_excel_drawing=&gt;type_image.
-      drawings-&gt;include( ip_drawing ).
-    WHEN zcl_excel_drawing=&gt;type_chart.
-      charts-&gt;include( ip_drawing ).
-  ENDCASE.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ADD_NEW_CONDITIONAL_STYLE" VERSION="1" LANGU="E" DESCRIPT="Creates a new conditional formatting" EXPOSURE="2" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ADD_NEW_CONDITIONAL_STYLE" SCONAME="EO_CONDITIONAL_STYLE" VERSION="1" LANGU="E" DESCRIPT="Font Style" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_STYLE_CONDITIONAL"/>
-  <source>method ADD_NEW_CONDITIONAL_STYLE.
-
-  CREATE OBJECT eo_conditional_style.
-  conditional_styles-&gt;add( eo_conditional_style ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ADD_NEW_DATA_VALIDATION" VERSION="1" LANGU="E" DESCRIPT="Creates a new data validation" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ADD_NEW_DATA_VALIDATION" SCONAME="EO_DATA_VALIDATION" VERSION="1" LANGU="E" DESCRIPT="Data validation" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_DATA_VALIDATION"/>
-  <source>method ADD_NEW_DATA_VALIDATION.
-
-  CREATE OBJECT eo_data_validation.
-  data_validations-&gt;add( eo_data_validation ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ADD_NEW_RANGE" VERSION="1" LANGU="E" DESCRIPT="Create a new local range" EXPOSURE="2" STATE="1" EDITORDER="4 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="ADD_NEW_RANGE" SCONAME="EO_RANGE" VERSION="1" LANGU="E" DESCRIPT="Worksheet" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_RANGE"/>
-  <source>method ADD_NEW_RANGE.
-* Create default blank range
-  CREATE OBJECT eo_range.
-  ranges-&gt;add( eo_range ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV" VERSION="1" LANGU="E" DESCRIPT="Set cell value from ALV object" EXPOSURE="2" STATE="1" EDITORDER="5 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV" SCONAME="IO_ALV" VERSION="1" LANGU="E" DESCRIPT="ALV List Viewer object ( ALV, SALV, ...)" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="OBJECT"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV" SCONAME="IT_TABLE" VERSION="1" LANGU="E" DESCRIPT="Data table" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV" SCONAME="I_TOP" VERSION="1" LANGU="E" DESCRIPT="Top edge of data block" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I" PARVALUE="1"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV" SCONAME="I_LEFT" VERSION="1" LANGU="E" DESCRIPT="Left-hand edge of data block" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I" PARVALUE="1"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV" SCONAME="TABLE_STYLE" VERSION="1" LANGU="E" DESCRIPT="Name of the table style" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_TABLE_STYLE" PAROPTIONL="X"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method BIND_ALV.
-  data: lo_converter type ref to zcl_excel_converter.
-
-  create object lo_converter.
-
-  try.
-      lo_converter-&gt;convert(
-        exporting
-          io_alv         = io_alv
-          it_table       = it_table
-          i_row_int      = i_top
-          i_column_int   = i_left
-          i_table        = abap_true
-          i_style_table  = table_style
-          io_worksheet   = me
-        changing
-          co_excel       = excel ).
-    catch zcx_excel .
-  endtry.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" VERSION="1" LANGU="E" DESCRIPT="Set cell value from ALV object (OLE2)" EXPOSURE="2" STATE="1" EDITORDER="6 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_DOCUMENT_URL" VERSION="1" LANGU="E" DESCRIPT="URL of file, must start with &lt;file://&gt;" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR255" PARVALUE="SPACE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_XLS" VERSION="1" LANGU="E" DESCRIPT="Export to .xls file?" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="C" PARVALUE="SPACE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_SAVE_PATH" VERSION="1" LANGU="E" DESCRIPT="Local file path" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="IO_ALV" VERSION="1" LANGU="E" DESCRIPT="ALV List Viewer" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="CL_GUI_ALV_GRID"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="IT_LISTHEADER" VERSION="1" LANGU="E" DESCRIPT="Top-of-page" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SLIS_T_LISTHEADER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_TOP" VERSION="1" LANGU="E" DESCRIPT="Top edge of data block" CMPTYPE="1" MTDTYPE="0" EDITORDER="6 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I" PARVALUE="1"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_LEFT" VERSION="1" LANGU="E" DESCRIPT="Left-hand edge of data block" CMPTYPE="1" MTDTYPE="0" EDITORDER="7 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I" PARVALUE="1"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_COLUMNS_HEADER" VERSION="1" LANGU="E" DESCRIPT="Export columns header?" CMPTYPE="1" MTDTYPE="0" EDITORDER="8 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="C" PARVALUE="&apos;X&apos;"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_COLUMNS_AUTOFIT" VERSION="1" LANGU="E" DESCRIPT="Autofit columns width?" CMPTYPE="1" MTDTYPE="0" EDITORDER="9 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="C" PARVALUE="&apos;X&apos;"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_FORMAT_COL_HEADER" VERSION="1" LANGU="E" DESCRIPT="Column header format" CMPTYPE="1" MTDTYPE="0" EDITORDER="10 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SOI_FORMAT_ITEM" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_FORMAT_SUBTOTAL" VERSION="1" LANGU="E" DESCRIPT="Subtotal lines format" CMPTYPE="1" MTDTYPE="0" EDITORDER="11 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SOI_FORMAT_ITEM" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="I_FORMAT_TOTAL" VERSION="1" LANGU="E" DESCRIPT="Total line format" CMPTYPE="1" MTDTYPE="0" EDITORDER="12 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SOI_FORMAT_ITEM" PAROPTIONL="X"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="MISS_GUIDE" VERSION="1" LANGU="E" DESCRIPT="Windows guide is missing" MTDTYPE="0" EDITORDER="1 "/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="EX_TRANSFER_KKBLO_ERROR" VERSION="1" LANGU="E" DESCRIPT="Transfer to KKBLO struct error" MTDTYPE="0" EDITORDER="2 "/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="FATAL_ERROR" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="3 "/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="INV_DATA_RANGE" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="4 "/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="DIM_MISMATCH_VKEY" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="5 "/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="DIM_MISMATCH_SEMA" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="6 "/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_ALV_OLE2" SCONAME="ERROR_IN_SEMA" VERSION="1" LANGU="E" DESCRIPT="Un-know columns Ops, columns Typ" MTDTYPE="0" EDITORDER="7 "/>
-  <source>method BIND_ALV_OLE2.
-*--------------------------------------------------------------------*
-* Method description:
-*   Method use to export a CL_GUI_ALV_GRID object to xlsx/xls file
-*   with list header and  characteristics of ALV field catalog such as:
-*     + Total, group&apos;s subtotal
-*     + Quantity fields, amount fields (dependent fields)
-*     + No_out, no_zero, ...
-* Technique use in method:
-*   SAP Desktop Office Integration (DOI)
-*--------------------------------------------------------------------*
-
-* Data for session 0: DOI constructor
-* ------------------------------------------
-
-  data: lo_control  type ref to I_OI_CONTAINER_CONTROL.
-  data: lo_proxy    type ref to I_OI_DOCUMENT_PROXY.
-  data: lo_spreadsheet type ref to I_OI_SPREADSHEET.
-  data: lo_error    type ref to I_OI_ERROR.
-  data: lc_retcode  type SOI_RET_STRING.
-  data: li_has      type i. &quot;Proxy has spreadsheet interface?
-  data: l_is_closed type i.
-
-* Data for session 1: Get LVC data from ALV object
-* ------------------------------------------
-
-  data: l_has_activex,
-        l_doctype_excel_sheet(11) type c.
-  data: wa_DOC_HANDLE Type  CNTL_HANDLE.
-
-* LVC
-  data: lt_fieldcat_lvc       type LVC_T_FCAT.
-  data: wa_fieldcat_lvc       type lvc_s_fcat.
-  data: lt_sort_lvc           type LVC_T_SORT.
-  data: lt_filter_idx_lvc     type LVC_T_FIDX.
-  data: lt_GROUPLEVELS_LVC    type LVC_T_GRPL.
-
-* KKBLO
-  DATA: LT_FIELDCAT_KKBLO     Type  KKBLO_T_FIELDCAT.
-  DATA: LT_SORT_KKBLO         Type  KKBLO_T_SORTINFO.
-  DATA: LT_GROUPLEVELS_KKBLO  Type  KKBLO_T_GROUPLEVELS.
-  DATA: LT_FILTER_IDX_KKBLO   Type  KKBLO_T_SFINFO.
-  data: wa_listheader         like line of it_listheader.
-
-* Subtotal
-  data: lt_collect00          type ref to data.
-  data: lt_collect01          type ref to data.
-  data: lt_collect02          type ref to data.
-  data: lt_collect03          type ref to data.
-  data: lt_collect04          type ref to data.
-  data: lt_collect05          type ref to data.
-  data: lt_collect06          type ref to data.
-  data: lt_collect07          type ref to data.
-  data: lt_collect08          type ref to data.
-  data: lt_collect09          type ref to data.
-
-* data table name
-  data: l_tabname             type  kkblo_tabname.
-
-* local object
-  data: lo_grid               type ref to lcl_gui_alv_grid.
-
-* data table get from ALV
-  data: lt_alv                  type ref to data.
-
-* total / subtotal data
-  field-symbols: &lt;f_collect00&gt;  type standard table.
-  field-symbols: &lt;f_collect01&gt;  type standard table.
-  field-symbols: &lt;f_collect02&gt;  type standard table.
-  field-symbols: &lt;f_collect03&gt;  type standard table.
-  field-symbols: &lt;f_collect04&gt;  type standard table.
-  field-symbols: &lt;f_collect05&gt;  type standard table.
-  field-symbols: &lt;f_collect06&gt;  type standard table.
-  field-symbols: &lt;f_collect07&gt;  type standard table.
-  field-symbols: &lt;f_collect08&gt;  type standard table.
-  field-symbols: &lt;f_collect09&gt;  type standard table.
-
-* table before append subtotal lines
-  field-symbols: &lt;f_alv_tab&gt;    type standard table.
-
-* data for session 2: sort, filter and calculate total/subtotal
-* ------------------------------------------
-
-* table to save index of subotal / total line in excel tanle
-* this ideal to control index of subtotal / total line later
-* for ex, when get subtotal / total line to format
-  types: begin of st_subtot_indexs,
-          index type i,
-        end of st_subtot_indexs.
-  data: lt_subtot_indexs type table of st_subtot_indexs.
-  data: wa_subtot_indexs like line of lt_subtot_indexs.
-
-* data table after append subtotal
-  data: lt_excel                type ref to data.
-
-  data: l_tabix                 type i.
-  data: l_save_index            type i.
-
-* dyn subtotal table name
-  data: l_collect               type string.
-
-* subtotal range, to format subtotal (and total)
-  data: subranges               type soi_range_list.
-  data: subrangeitem            type soi_range_item.
-  data: l_sub_index             type i.
-
-
-* table after append subtotal lines
-  field-symbols: &lt;f_excel_tab&gt;  type standard table.
-  field-symbols: &lt;f_excel_line&gt; type any.
-
-* dyn subtotal tables
-  field-symbols: &lt;f_collect_tab&gt;      type standard table.
-  field-symbols: &lt;f_collect_line&gt;     type any.
-
-  field-symbols: &lt;f_filter_idx_line&gt;  like line of LT_FILTER_IDX_KKBLO.
-  field-symbols: &lt;f_fieldcat_line&gt;    like line of LT_FIELDCAT_KKBLO.
-  field-symbols: &lt;f_grouplevels_line&gt; like line of LT_GROUPLEVELS_KKBLO.
-  field-symbols: &lt;f_line&gt;             type any.
-
-* Data for session 3: map data to semantic table
-* ------------------------------------------
-
-  types: begin of st_column_index,
-          fieldname type kkblo_fieldname,
-          tabname   type kkblo_tabname,
-          col like sy-index,
-         end of st_column_index.
-
-* columns index
-  data: lt_column_index   type table of st_column_index.
-  data: wa_column_index   like line of lt_column_index.
-
-* table of dependent field ( currency and quantity unit field)
-  data: lt_fieldcat_depf  type kkblo_t_fieldcat.
-  data: wa_fieldcat_depf  type kkblo_fieldcat.
-
-* XXL interface:
-* -XXL: contain exporting columns characteristic
-  data: lt_sema type table of gxxlt_s initial size 0.
-  data: wa_sema like line of lt_sema.
-
-* -XXL interface: header
-  data: lt_hkey type table of gxxlt_h initial size 0.
-  data: wa_hkey like line of lt_hkey.
-
-* -XXL interface: header keys
-  data: lt_vkey type table of gxxlt_v initial size 0.
-  data: wa_vkey like line of lt_vkey.
-
-* Number of H Keys: number of key columns
-  data: l_n_hrz_keys      type  i.
-* Number of data columns in the list object: non-key columns no
-  data: l_n_att_cols      type  i.
-* Number of V Keys: number of header row
-  data: l_n_vrt_keys      type  i.
-
-* curency to format amount
-  data: lt_tcurx          type table of tcurx.
-  data: wa_tcurx          like line of lt_tcurx.
-  data: l_def             type flag. &quot; currency / quantity flag
-  data: wa_t006           type t006. &quot; decimal place of unit
-
-  data: l_num             type i. &quot; table columns number
-  data: l_typ             type c. &quot; table type
-  data: wa                type ref to data.
-  data: l_int             type i.
-  data: l_counter         type i.
-
-  field-symbols: &lt;f_excel_column&gt;     type any.
-  field-symbols: &lt;f_fcat_column&gt;      type any.
-
-* Data for session 4: write to excel
-* ------------------------------------------
-
-  data: data_starting_at  type  i value 1.
-  data: data_ending_at    type  i value -1.
-  data: sema_type         type  c.
-
-  data l_error           type ref to c_oi_proxy_error.
-  data count              type i.
-  data datac              type i.
-  data datareal           type i. &quot; exporting column number
-  data vkeycount          type i.
-  data all type i.
-  data mit type i         value 1.  &quot; index of recent row?
-  data li_col_pos type i  value 1.  &quot; column position
-  data li_col_num type i.           &quot; table columns number
-  field-symbols: &lt;line&gt;   type any.
-  field-symbols: &lt;item&gt;   type any.
-
-  data td                 type sydes_desc.
-
-  data: typ.
-  data: ranges             type soi_range_list.
-  data: rangeitem          type soi_range_item.
-  data: contents           type soi_generic_table.
-  data: contentsitem       type soi_generic_item.
-  data: semaitem           type gxxlt_s.
-  data: hkeyitem           type gxxlt_h.
-  data: vkeyitem           type gxxlt_v.
-  data: li_commentary_rows type i.  &quot;row number of title lines + 1
-  data: lo_error_w         type ref to  i_oi_error.
-  data: l_retcode          type soi_ret_string.
-  data: no_flush           type c value &apos;X&apos;.
-  data: li_head_top        type i. &quot;header rows position
-
-* Data for session 5: Save and clode document
-* ------------------------------------------
-
-  data: li_document_size   type i.
-  data: ls_path            type RLGRAP-FILENAME.
-
-* MACRO: Close_document
-*-------------------------------------------
-
-  DEFINE close_document.
-    clear: l_is_closed.
-    IF lo_proxy is not initial.
-
-* check proxy detroyed adi
-
-      call method lo_proxy-&gt;is_destroyed
-        IMPORTING
-          ret_value = l_is_closed.
-
-* if dun detroyed yet: close -&gt; release proxy
-
-      IF l_is_closed is initial.
-        call method lo_proxy-&gt;close_document
-*        EXPORTING
-*          do_save = do_save
-          IMPORTING
-            error       = lo_error
-            retcode     = lc_retcode.
-      ENDIF.
-
-      call method lo_proxy-&gt;release_document
-        IMPORTING
-          error   = lo_error
-          retcode = lC_retcode.
-
-    else.
-      lc_retcode = c_oi_errors=&gt;ret_document_not_open.
-    ENDIF.
-
-* Detroy control container
-
-    IF lo_control is not initial.
-      CALL METHOD lo_control-&gt;destroy_control.
-    ENDIF.
-
-    clear:
-      lo_spreadsheet,
-      lo_proxy,
-      lo_control.
-
-* free local
-
-    clear: l_is_closed.
-
-  END-OF-DEFINITION.
-
-* Macro to catch DOI error
-*-------------------------------------------
-
-  DEFINE error_doi.
-    if lc_retcode ne c_oi_errors=&gt;ret_ok.
-      close_document.
-      call method lo_error-&gt;raise_message
-        EXPORTING
-          type = &apos;E&apos;.
-      clear: lo_error.
-    endif.
-  END-OF-DEFINITION.
-
-*--------------------------------------------------------------------*
-* SESSION 0: DOI CONSTRUCTOR
-*--------------------------------------------------------------------*
-
-* check active windown
-
-  call function &apos;GUI_HAS_ACTIVEX&apos;
-    IMPORTING
-      return = l_has_activex.
-
-  if l_has_activex is initial.
-    raise MISS_GUIDE.
-  endif.
-
-*   Get Container Object of Screen
-
-  call method c_oi_container_control_creator=&gt;get_container_control
-    IMPORTING
-      control = lo_control
-      retcode = lC_retcode.
-
-  error_doi.
-
-* Initialize Container control
-
-  CALL METHOD lo_control-&gt;init_control
-    EXPORTING
-      parent                   = CL_GUI_CONTAINER=&gt;DEFAULT_SCREEN
-      r3_application_name      = &apos;&apos;
-      inplace_enabled          = &apos;X&apos;
-      no_flush                 = &apos;X&apos;
-      register_on_close_event  = &apos;X&apos;
-      register_on_custom_event = &apos;X&apos;
-    IMPORTING
-      error                    = lO_ERROR
-      retcode                  = lc_retcode.
-
-  error_doi.
-
-* Get Proxy Document:
-* check exist of document proxy, if exist -&gt; close first
-
-  if not lo_proxy is initial.
-    close_document.
-  endif.
-
-  IF i_xls is not initial.
-* xls format, doctype = soi_doctype_excel97_sheet
-    l_doctype_excel_sheet = &apos;Excel.Sheet.8&apos;.
-  else.
-* xlsx format, doctype = soi_doctype_excel_sheet
-    l_doctype_excel_sheet = &apos;Excel.Sheet&apos;.
-  ENDIF.
-
-  CALL METHOD lo_control-&gt;get_document_proxy
-    EXPORTING
-      document_type      = l_doctype_excel_sheet
-      register_container = &apos;X&apos;
-    IMPORTING
-      document_proxy     = lo_proxy
-      error              = lO_ERROR
-      retcode            = lc_retcode.
-
-  error_doi.
-
-  IF I_DOCUMENT_URL is initial.
-
-* create new excel document
-
-    call method lo_proxy-&gt;create_document
-      EXPORTING
-        create_view_data = &apos;X&apos;
-        open_inplace     = &apos;X&apos;
-        no_flush         = &apos;X&apos;
-      IMPORTING
-        ERROR            = lO_ERROR
-        retcode          = lc_retcode.
-
-    error_doi.
-
-  else.
-
-* Read excel template for i_DOCUMENT_URL
-* this excel template can be store in local or server
-
-    CALL METHOD lo_proxy-&gt;open_document
-      EXPORTING
-        document_url = i_document_url
-        open_inplace = &apos;X&apos;
-        no_flush     = &apos;X&apos;
-      IMPORTING
-        error        = lo_error
-        retcode      = lc_retcode.
-
-    error_doi.
-
-  endif.
-
-* Check Spreadsheet Interface of Document Proxy
-
-  CALL METHOD lo_proxy-&gt;has_spreadsheet_interface
-    IMPORTING
-      is_available = li_has
-      error        = lO_ERROR
-      retcode      = lc_retcode.
-
-  error_doi.
-
-* create Spreadsheet object
-
-  CHECK li_has IS NOT INITIAL.
-
-  CALL METHOD lo_proxy-&gt;get_spreadsheet_interface
-    IMPORTING
-      sheet_interface = lo_spreadsheet
-      error           = lO_ERROR
-      retcode         = lc_retcode.
-
-  error_doi.
-
-*--------------------------------------------------------------------*
-* SESSION 1: GET LVC DATA FROM ALV OBJECT
-*--------------------------------------------------------------------*
-
-* data table
-
-  create object lo_grid
-    EXPORTING
-      i_parent = CL_GUI_CONTAINER=&gt;SCREEN0.
-
-  call method lo_grid-&gt;get_alv_attributes
-    EXPORTING
-      io_grid  = io_alv
-    IMPORTING
-      Et_table = lt_alv.
-
-  assign lt_alv-&gt;* to &lt;f_alv_tab&gt;.
-
-* fieldcat
-
-  CALL METHOD iO_alv-&gt;GET_FRONTEND_FIELDCATALOG
-    IMPORTING
-      ET_FIELDCATALOG = lt_fieldcat_LVC.
-
-* table name
-
-  loop at lt_fieldcat_LVC into wa_fieldcat_lvc
-  where not tabname is initial.
-    l_tabname = wa_fieldcat_lvc-tabname.
-    exit.
-  endloop.
-
-  if sy-subrc ne 0.
-    l_tabname = &apos;1&apos;.
-  endif.
-  clear: wa_fieldcat_lvc.
-
-* sort table
-
-  CALL METHOD IO_ALV-&gt;GET_SORT_CRITERIA
-    IMPORTING
-      ET_SORT = lt_sort_lvc.
-
-
-* filter index
-
-  CALL METHOD IO_ALV-&gt;GET_FILTERED_ENTRIES
-    IMPORTING
-      ET_FILTERED_ENTRIES = lt_filter_idx_lvc.
-
-* group level + subtotal
-
-  CALL METHOD IO_ALV-&gt;GET_SUBTOTALS
-    IMPORTING
-      EP_COLLECT00   = lt_collect00
-      EP_COLLECT01   = lt_collect01
-      EP_COLLECT02   = lt_collect02
-      EP_COLLECT03   = lt_collect03
-      EP_COLLECT04   = lt_collect04
-      EP_COLLECT05   = lt_collect05
-      EP_COLLECT06   = lt_collect06
-      EP_COLLECT07   = lt_collect07
-      EP_COLLECT08   = lt_collect08
-      EP_COLLECT09   = lt_collect09
-      ET_GROUPLEVELS = lt_GROUPLEVELS_LVC.
-
-  assign lt_collect00-&gt;* to &lt;f_collect00&gt;.
-  assign lt_collect01-&gt;* to &lt;f_collect01&gt;.
-  assign lt_collect02-&gt;* to &lt;f_collect02&gt;.
-  assign lt_collect03-&gt;* to &lt;f_collect03&gt;.
-  assign lt_collect04-&gt;* to &lt;f_collect04&gt;.
-  assign lt_collect05-&gt;* to &lt;f_collect05&gt;.
-  assign lt_collect06-&gt;* to &lt;f_collect06&gt;.
-  assign lt_collect07-&gt;* to &lt;f_collect07&gt;.
-  assign lt_collect08-&gt;* to &lt;f_collect08&gt;.
-  assign lt_collect09-&gt;* to &lt;f_collect09&gt;.
-
-* transfer to KKBLO struct
-
-  CALL FUNCTION &apos;LVC_TRANSFER_TO_KKBLO&apos;
-    EXPORTING
-      IT_FIELDCAT_LVC           = lt_fieldcat_lvc
-      IT_SORT_LVC               = lt_sort_lvc
-      IT_FILTER_INDEX_LVC       = lt_filter_idx_lvc
-      IT_GROUPLEVELS_LVC        = lt_grouplevels_lvc
-    IMPORTING
-      ET_FIELDCAT_KKBLO         = lt_fieldcat_kkblo
-      ET_SORT_KKBLO             = lt_sort_kkblo
-      ET_FILTERED_ENTRIES_KKBLO = lt_filter_idx_kkblo
-      ET_GROUPLEVELS_KKBLO      = lt_grouplevels_kkblo
-    TABLES
-      IT_DATA                   = &lt;f_alv_tab&gt;
-    EXCEPTIONS
-      IT_DATA_MISSING           = 1
-      IT_FIELDCAT_LVC_MISSING   = 2
-      OTHERS                    = 3.
-  IF SY-SUBRC &lt;&gt; 0.
-    raise ex_transfer_KKBLO_ERROR.
-  ENDIF.
-
-  clear:
-    wa_fieldcat_lvc,
-    lt_fieldcat_lvc,
-    lt_sort_lvc,
-    lt_filter_idx_lvc,
-    lt_GROUPLEVELS_LVC.
-
-  clear:
-    lo_grid.
-
-
-*--------------------------------------------------------------------*
-* SESSION 2: SORT, FILTER AND CALCULATE TOTAL / SUBTOTAL
-*--------------------------------------------------------------------*
-
-* append subtotal &amp; total line
-
-  create data lt_excel like &lt;f_ALV_TAB&gt;.
-  assign lt_excel-&gt;* to &lt;f_excel_tab&gt;.
-
-  loop at &lt;f_alv_tab&gt; assigning &lt;f_line&gt;.
-    l_save_index = sy-tabix.
-
-* filter base on filter index table
-
-    read table LT_FILTER_IDX_KKBLO assigning &lt;f_filter_idx_line&gt;
-    with key index = l_save_index
-    binary search.
-    if sy-subrc ne 0.
-      append &lt;f_line&gt; to &lt;f_excel_tab&gt;.
-    endif.
-
-* append subtotal lines
-
-    read table LT_GROUPLEVELS_KKBLO assigning &lt;f_grouplevels_line&gt;
-    with key index_to = l_save_index
-    binary search.
-    if sy-subrc = 0.
-      l_tabix = sy-tabix.
-      do.
-        if &lt;f_grouplevels_line&gt;-subtot eq &apos;X&apos; and
-           &lt;f_grouplevels_line&gt;-hide_level is initial and
-           &lt;f_grouplevels_line&gt;-cindex_from ne 0.
-
-* dynamic append subtotal line to excel table base on grouplevel table
-* ex &lt;f_GROUPLEVELS_line&gt;-level = 1
-* then &lt;f_collect_tab&gt; = &apos;&lt;F_COLLECT01&gt;&apos;
-
-          l_collect = &lt;f_grouplevels_line&gt;-level.
-          condense l_collect.
-          concatenate &apos;&lt;F_COLLECT0&apos;
-                      l_collect &apos;&gt;&apos;
-*                      &apos;-&gt;*&apos;
-                      into l_collect.
-
-          assign (l_collect) to &lt;f_collect_tab&gt;.
-
-* incase there&apos;re more than 1 total line of group, at the same level
-* for example: subtotal of multi currency
-
-          LOOP AT &lt;f_collect_tab&gt; assigning &lt;f_collect_line&gt;.
-            IF  sy-tabix between &lt;f_grouplevels_line&gt;-cindex_from
-                            and  &lt;f_grouplevels_line&gt;-cindex_to.
-
-
-              append &lt;f_collect_line&gt; to &lt;f_excel_tab&gt;.
-
-* save subtotal lines index
-
-              wa_subtot_indexs-index = sy-tabix.
-              append wa_subtot_indexs to lt_subtot_indexs.
-
-* append sub total ranges table for format later
-
-              add 1 to l_sub_index.
-              subrangeitem-name     =  l_sub_index.
-              condense subrangeitem-name.
-              concatenate &apos;SUBTOT&apos;
-                          subrangeitem-name
-                          into subrangeitem-name.
-
-              subrangeitem-rows     = wa_subtot_indexs-index.
-              subrangeitem-columns  = 1.            &quot; start col
-              append subrangeitem to subranges.
-              clear: subrangeitem.
-
-            ENDIF.
-          ENDLOOP.
-          unassign: &lt;f_collect_tab&gt;.
-          unassign: &lt;f_collect_line&gt;.
-          clear: l_collect.
-        endif.
-
-* check next subtotal level of group
-
-        unassign: &lt;f_grouplevels_line&gt;.
-        add 1 to l_tabix.
-
-        read table LT_GROUPLEVELS_KKBLO assigning &lt;f_grouplevels_line&gt;
-        index l_tabix.
-        if sy-subrc ne 0
-        or &lt;f_grouplevels_line&gt;-index_to ne l_save_index.
-          exit.
-        endif.
-
-        unassign:
-          &lt;f_collect_tab&gt;,
-          &lt;f_collect_line&gt;.
-
-      enddo.
-    endif.
-
-    clear:
-      l_tabix,
-      l_save_index.
-
-    unassign:
-      &lt;f_filter_idx_line&gt;,
-      &lt;f_grouplevels_line&gt;.
-
-  endloop.
-
-* free local data
-
-  unassign:
-    &lt;f_line&gt;,
-    &lt;f_collect_tab&gt;,
-    &lt;f_collect_line&gt;,
-    &lt;f_fieldcat_line&gt;.
-
-* append grand total line
-
-  IF &lt;f_collect00&gt; is assigned.
-    assign &lt;f_collect00&gt; to &lt;f_collect_tab&gt;.
-    if &lt;f_collect_tab&gt; is not initial.
-      LOOP AT &lt;f_collect_tab&gt; assigning &lt;f_collect_line&gt;.
-
-        append &lt;f_collect_line&gt; to &lt;f_excel_tab&gt;.
-
-* save total line index
-
-        wa_subtot_indexs-index = sy-tabix.
-        append wa_subtot_indexs to lt_subtot_indexs.
-
-* append grand total range (to format)
-
-        add 1 to l_sub_index.
-        subrangeitem-name     =  l_sub_index.
-        condense subrangeitem-name.
-        concatenate &apos;TOTAL&apos;
-                    subrangeitem-name
-                    into subrangeitem-name.
-
-        subrangeitem-rows     = wa_subtot_indexs-index.
-        subrangeitem-columns  = 1.            &quot; start col
-        append subrangeitem to subranges.
-      ENDLOOP.
-    endif.
-  ENDIF.
-
-  clear:
-    subrangeitem,
-    LT_SORT_KKBLO,
-    &lt;f_collect00&gt;,
-    &lt;f_collect01&gt;,
-    &lt;f_collect02&gt;,
-    &lt;f_collect03&gt;,
-    &lt;f_collect04&gt;,
-    &lt;f_collect05&gt;,
-    &lt;f_collect06&gt;,
-    &lt;f_collect07&gt;,
-    &lt;f_collect08&gt;,
-    &lt;f_collect09&gt;.
-
-  unassign:
-    &lt;f_collect00&gt;,
-    &lt;f_collect01&gt;,
-    &lt;f_collect02&gt;,
-    &lt;f_collect03&gt;,
-    &lt;f_collect04&gt;,
-    &lt;f_collect05&gt;,
-    &lt;f_collect06&gt;,
-    &lt;f_collect07&gt;,
-    &lt;f_collect08&gt;,
-    &lt;f_collect09&gt;,
-    &lt;f_collect_tab&gt;,
-    &lt;f_collect_line&gt;.
-
-*--------------------------------------------------------------------*
-* SESSION 3: MAP DATA TO SEMANTIC TABLE
-*--------------------------------------------------------------------*
-
-* get dependent field field: currency and quantity
-
-  create data wa like line of &lt;f_excel_tab&gt;.
-  assign wa-&gt;* to &lt;f_excel_line&gt;.
-
-  describe field &lt;f_excel_line&gt; type l_typ components l_num.
-
-  do l_num times.
-    l_save_index = sy-index.
-    assign component l_save_index of structure &lt;f_excel_line&gt;
-    to &lt;f_excel_column&gt;.
-    if sy-subrc ne 0.
-      message e059(0k) with &apos;FATAL ERROR&apos; raising fatal_error.
-    endif.
-
-    loop at LT_FIELDCAT_KKBLO assigning &lt;f_fieldcat_line&gt;
-    where tabname = l_tabname.
-      assign component &lt;f_fieldcat_line&gt;-fieldname
-      of structure &lt;f_excel_line&gt; to &lt;f_fcat_column&gt;.
-
-      describe distance between &lt;f_excel_column&gt; and &lt;f_fcat_column&gt;
-      into l_int in byte mode.
-
-* append column index
-* this columns index is of table, not fieldcat
-
-      if l_int = 0.
-        wa_column_index-fieldname = &lt;f_fieldcat_line&gt;-fieldname.
-        wa_column_index-tabname   = &lt;f_fieldcat_line&gt;-tabname.
-        wa_column_index-col       = l_save_index.
-        append wa_column_index to lt_column_index.
-      endif.
-
-* append dependent fields (currency and quantity unit)
-
-      if &lt;f_fieldcat_line&gt;-cfieldname is not initial.
-        clear wa_fieldcat_depf.
-        wa_fieldcat_depf-fieldname = &lt;f_fieldcat_line&gt;-cfieldname.
-        wa_fieldcat_depf-tabname   = &lt;f_fieldcat_line&gt;-ctabname.
-        collect wa_fieldcat_depf into lt_fieldcat_depf.
-      endif.
-
-      if &lt;f_fieldcat_line&gt;-qfieldname is not initial.
-        clear wa_fieldcat_depf.
-        wa_fieldcat_depf-fieldname = &lt;f_fieldcat_line&gt;-qfieldname.
-        wa_fieldcat_depf-tabname   = &lt;f_fieldcat_line&gt;-qtabname.
-        collect wa_fieldcat_depf into lt_fieldcat_depf.
-      endif.
-
-* rewrite field data type
-
-      if &lt;f_fieldcat_line&gt;-inttype = &apos;X&apos;
-      and &lt;f_fieldcat_line&gt;-datatype(3) = &apos;INT&apos;.
-        &lt;f_fieldcat_line&gt;-inttype = &apos;I&apos;.
-      endif.
-
-    endloop.
-
-    clear: l_save_index.
-    unassign: &lt;f_fieldcat_line&gt;.
-
-  enddo.
-
-* build semantic tables
-
-  l_n_hrz_keys = 1.
-
-*   Get keyfigures
-
-  loop at LT_FIELDCAT_KKBLO assigning &lt;f_fieldcat_line&gt;
-  where tabname = l_tabname
-  and tech ne &apos;X&apos;
-  and no_out ne &apos;X&apos;.
-
-    clear wa_sema.
-    clear wa_hkey.
-
-*   Units belong to keyfigures -&gt; display as str
-
-    read table lt_fieldcat_depf into wa_fieldcat_depf with key
-    fieldname = &lt;f_fieldcat_line&gt;-fieldname
-    tabname   = &lt;f_fieldcat_line&gt;-tabname.
-
-    if sy-subrc = 0.
-      wa_sema-col_typ = &apos;STR&apos;.
-      wa_sema-col_ops = &apos;DFT&apos;.
-
-*   Keyfigures
-
-    else.
-      case &lt;f_fieldcat_line&gt;-datatype.
-        when &apos;QUAN&apos;.
-          wa_sema-col_typ = &apos;N03&apos;.
-
-          if &lt;f_fieldcat_line&gt;-no_sum ne &apos;X&apos;.
-            wa_sema-col_ops = &apos;ADD&apos;.
-          else.
-            wa_sema-col_ops = &apos;NOP&apos;. &quot; no dependent field
-          endif.
-
-        when &apos;DATS&apos;.
-          wa_sema-col_typ = &apos;DAT&apos;.
-          wa_sema-col_ops = &apos;NOP&apos;.
-
-        when &apos;CHAR&apos; OR &apos;UNIT&apos; OR &apos;CUKY&apos;. &quot; Added fieldformats UNIT and CUKY - dd. 26-10-2012 Wouter Heuvelmans
-          wa_sema-col_typ = &apos;STR&apos;.
-          wa_sema-col_ops = &apos;DFT&apos;.   &quot; dependent field
-
-*   incase numeric, ex &apos;00120&apos; -&gt; display as &apos;12&apos;
-
-        when &apos;NUMC&apos;.
-          wa_sema-col_typ = &apos;STR&apos;.
-          wa_sema-col_ops = &apos;DFT&apos;.
-
-        when others.
-          wa_sema-col_typ = &apos;NUM&apos;.
-
-          if &lt;f_fieldcat_line&gt;-no_sum ne &apos;X&apos;.
-            wa_sema-col_ops = &apos;ADD&apos;.
-          else.
-            wa_sema-col_ops = &apos;NOP&apos;.
-          endif.
-      endcase.
-    endif.
-
-    l_counter = l_counter + 1.
-    l_n_att_cols = l_n_att_cols + 1.
-
-    wa_sema-col_no = l_counter.
-
-    read table lt_column_index into wa_column_index with key
-    fieldname = &lt;f_fieldcat_line&gt;-fieldname
-    tabname   = &lt;f_fieldcat_line&gt;-tabname.
-
-    if sy-subrc = 0.
-      wa_sema-col_src = wa_column_index-col.
-    else.
-      raise fatal_error.
-    endif.
-
-* columns index of ref currency field in table
-
-    if not &lt;f_fieldcat_line&gt;-cfieldname is initial.
-      read table lt_column_index into wa_column_index with key
-      fieldname = &lt;f_fieldcat_line&gt;-cfieldname
-      tabname   = &lt;f_fieldcat_line&gt;-ctabname.
-
-      if sy-subrc = 0.
-        wa_sema-col_cur = wa_column_index-col.
-      endif.
-
-* quantities fields
-* treat as currency when display on excel
-
-    elseif not &lt;f_fieldcat_line&gt;-qfieldname is initial.
-      read table lt_column_index into wa_column_index with key
-      fieldname = &lt;f_fieldcat_line&gt;-qfieldname
-      tabname   = &lt;f_fieldcat_line&gt;-qtabname.
-      if sy-subrc = 0.
-        wa_sema-col_cur = wa_column_index-col.
-      endif.
-
-    endif.
-
-*   Treat of fixed currency in the fieldcatalog for column
-
-    data: l_num_help(2) type n.
-
-    if not &lt;f_fieldcat_line&gt;-currency is initial.
-
-      select * from tcurx into table lt_tcurx.
-      sort lt_tcurx.
-      read table lt_tcurx into wa_tcurx
-                 with key currkey = &lt;f_fieldcat_line&gt;-currency.
-      if sy-subrc = 0.
-        l_num_help = wa_tcurx-currdec.
-        concatenate &apos;N&apos; l_num_help into wa_sema-col_typ.
-        wa_sema-col_cur = sy-tabix * ( -1 ).
-      endif.
-
-    endif.
-
-    wa_hkey-col_no    = l_n_att_cols.
-    wa_hkey-row_no    = l_n_hrz_keys.
-    wa_hkey-col_name  = &lt;f_fieldcat_line&gt;-reptext.
-    append wa_hkey to lt_hkey.
-    append wa_sema to lt_sema.
-
-  endloop.
-
-* free local data
-
-  clear:
-    lt_column_index,
-    wa_column_index,
-    lt_fieldcat_depf,
-    wa_fieldcat_depf,
-    lt_tcurx,
-    wa_tcurx,
-    l_num,
-    l_typ,
-    wa,
-    l_int,
-    l_counter.
-
-  unassign:
-    &lt;f_fieldcat_line&gt;,
-    &lt;f_excel_line&gt;,
-    &lt;f_excel_column&gt;,
-    &lt;f_fcat_column&gt;.
-
-*--------------------------------------------------------------------*
-* SESSION 4: WRITE TO EXCEL
-*--------------------------------------------------------------------*
-
-  clear: wa_tcurx.
-  refresh: lt_tcurx.
-
-*   if spreadsheet dun have proxy yet
-
-  if li_has is initial.
-    l_retcode = c_oi_errors=&gt;ret_interface_not_supported.
-    call method c_oi_errors=&gt;create_error_for_retcode
-      EXPORTING
-        retcode  = l_retcode
-        no_flush = no_flush
-      IMPORTING
-        error    = lo_error_w.
-    exit.
-  endif.
-
-  create object l_error
-    EXPORTING
-      object_name = &apos;OLE_DOCUMENT_PROXY&apos;
-      method_name = &apos;get_ranges_names&apos;.
-
-  call method c_oi_errors=&gt;add_error
-    EXPORTING
-      error = l_error.
-
-
-  describe table lt_sema lines datareal.
-  describe table &lt;f_excel_tab&gt; lines datac.
-  describe table lt_vkey lines vkeycount.
-
-  if datac = 0.
-    raise inv_data_range.
-  endif.
-
-
-  if vkeycount ne l_n_vrt_keys.
-    raise dim_mismatch_vkey.
-  endif.
-
-  all = l_n_vrt_keys + l_n_att_cols.
-
-  if datareal ne all.
-    raise dim_mismatch_sema.
-  endif.
-
-  data: decimal type c.
-
-* get decimal separator format (&apos;.&apos;, &apos;,&apos;, ...) in Office config
-
-  call method lo_proxy-&gt;get_application_property
-    EXPORTING
-      property_name    = &apos;INTERNATIONAL&apos;
-      subproperty_name = &apos;DECIMAL_SEPARATOR&apos;
-    CHANGING
-      retvalue         = decimal.
-
-  data: wa_usr type usr01.
-  select * from usr01 into wa_usr where bname = sy-uname.
-  endselect.
-
-  data: comma_elim(4) type c.
-  data: help6 type i.
-  field-symbols &lt;g&gt; type any.
-  data search_item(4) value &apos;   #&apos;.
-
-  concatenate &apos;,&apos; decimal &apos;.&apos; decimal into comma_elim.
-
-  data help type i. &quot; table (with subtotal) line number
-
-  help = datac.
-
-  data: rowmax type i value 1.    &quot; header row number
-  data: columnmax type i value 0. &quot; header columns number
-
-  loop at lt_hkey into hkeyitem.
-    if hkeyitem-col_no &gt; columnmax.
-      columnmax = hkeyitem-col_no.
-    endif.
-
-    if hkeyitem-row_no &gt; rowmax.
-      rowmax = hkeyitem-row_no.
-    endif.
-  endloop.
-
-  data: hkeycolumns type i. &quot; header columns no
-
-  hkeycolumns = columnmax.
-
-  if hkeycolumns &lt;   l_n_att_cols.
-    hkeycolumns = l_n_att_cols.
-  endif.
-
-  columnmax = 0.
-
-  loop at lt_vkey into vkeyitem.
-    if vkeyitem-col_no &gt; columnmax.
-      columnmax = vkeyitem-col_no.
-    endif.
-  endloop.
-
-  data overflow type i value 1.
-  data testname(10) type c.
-  data temp2 type i.                &quot; 1st item row position in excel
-  data realmit type i value 1.
-  data realoverflow type i value 1. &quot; row index in content
-
-  call method lo_spreadsheet-&gt;screen_update
-    EXPORTING
-      updating = &apos;&apos;.
-
-  call method lo_spreadsheet-&gt;load_lib.
-
-  data: str(40) type c. &quot; range names of columns range (w/o col header)
-  data: rows type i.    &quot; row postion of 1st item line in ecxel
-
-* calculate row position of data table
-
-  describe table iT_LISTHEADER lines li_commentary_rows.
-
-* if grid had title, add 1 empy line between title and table
-
-  if li_commentary_rows ne 0.
-    add 1 to li_commentary_rows.
-  endif.
-
-* add top position of block data
-
-  li_commentary_rows = li_commentary_rows + i_top - 1.
-
-* write header (commentary rows)
-
-  data: li_commentary_row_index type i value 1.
-  data: li_content_index type i value 1.
-  data: ls_index(10) type c.
-  data  ls_commentary_range(40) type c value &apos;TITLE&apos;.
-  data: li_font_bold    type i.
-  data: li_font_italic  type i.
-  data: li_font_size    type i.
-
-  loop at iT_LISTHEADER into wa_listheader.
-    li_commentary_row_index = i_top + li_content_index - 1.
-    ls_index = li_content_index.
-    condense ls_index.
-    concatenate ls_commentary_range(5) ls_index
-                into ls_commentary_range.
-    condense ls_commentary_range.
-
-* insert title range
-
-    call method lo_spreadsheet-&gt;insert_range_dim
-      EXPORTING
-        name     = ls_commentary_range
-        top      = li_commentary_row_index
-        left     = i_left
-        rows     = 1
-        columns  = 1
-        no_flush = no_flush.
-
-* format range
-
-    case wa_listheader-typ.
-      when &apos;H&apos;. &quot;title
-        li_font_size    = 16.
-        li_font_bold    = 1.
-        li_font_italic  = -1.
-      when &apos;S&apos;. &quot;subtile
-        li_font_size = -1.
-        li_font_bold    = 1.
-        li_font_italic  = -1.
-      when others. &quot;&apos;A&apos; comment
-        li_font_size = -1.
-        li_font_bold    = -1.
-        li_font_italic  = 1.
-    endcase.
-
-    call method lo_spreadsheet-&gt;set_font
-      EXPORTING
-        rangename = ls_commentary_range
-        family    = &apos;&apos;
-        size      = li_font_size
-        bold      = li_font_bold
-        italic    = li_font_italic
-        align     = 0
-        no_flush  = no_flush.
-
-* title: range content
-
-    rangeitem-name = ls_commentary_range.
-    rangeitem-columns = 1.
-    rangeitem-rows = 1.
-    append rangeitem to ranges.
-
-    contentsitem-row    = li_content_index.
-    contentsitem-column = 1.
-    concatenate wa_listheader-key
-                wa_listheader-info
-                into contentsitem-value
-                separated by space.
-    condense contentsitem-value.
-    append contentsitem to contents.
-
-    add 1 to li_content_index.
-
-    clear:
-      rangeitem,
-      contentsitem,
-      ls_index.
-
-  endloop.
-
-* set range data title
-
-  call method lo_spreadsheet-&gt;set_ranges_data
-    EXPORTING
-      ranges   = ranges
-      contents = contents
-      no_flush = no_flush.
-
-  refresh:
-     ranges,
-     contents.
-
-  rows = rowmax + li_commentary_rows + 1.
-
-  all = wa_usr-datfm.
-  all = all + 3.
-
-  loop at lt_sema into semaitem.
-    if semaitem-col_typ = &apos;DAT&apos; or semaitem-col_typ = &apos;MON&apos; or
-       semaitem-col_typ = &apos;N00&apos; or semaitem-col_typ = &apos;N01&apos; or
-       semaitem-col_typ = &apos;N01&apos; or semaitem-col_typ = &apos;N02&apos; or
-       semaitem-col_typ = &apos;N03&apos; or semaitem-col_typ = &apos;PCT&apos; or
-       semaitem-col_typ = &apos;STR&apos; or semaitem-col_typ = &apos;NUM&apos;.
-      clear str.
-      str = semaitem-col_no.
-      condense str.
-      concatenate &apos;DATA&apos; str into str.
-      mit = semaitem-col_no.
-      li_col_pos = semaitem-col_no + i_left - 1.
-
-* range from data1 to data(n), for each columns of table
-
-      call method lo_spreadsheet-&gt;insert_range_dim
-        EXPORTING
-          name     = str
-          top      = rows
-          left     = li_col_pos
-          rows     = help
-          columns  = 1
-          no_flush = no_flush.
-
-      data dec type i value -1.
-      data typeinfo type sydes_typeinfo.
-      loop at &lt;f_excel_tab&gt; assigning &lt;line&gt;.
-        assign component semaitem-col_no of structure &lt;line&gt; to &lt;item&gt;.
-        describe field &lt;item&gt; into td.
-        read table td-types index 1 into typeinfo.
-        if typeinfo-type = &apos;P&apos;.
-          dec = typeinfo-decimals.
-        elseif typeinfo-type = &apos;I&apos;.
-          dec = 0.
-        endif.
-
-        describe field &lt;line&gt; type typ components count.
-        mit = 1.
-        do count times.
-          if mit = semaitem-col_src.
-            assign component sy-index of structure &lt;line&gt; to &lt;item&gt;.
-            describe field &lt;item&gt; into td.
-            read table td-types index 1 into typeinfo.
-            if typeinfo-type = &apos;P&apos;.
-              dec = typeinfo-decimals.
-            endif.
-            exit.
-          endif.
-          mit = mit + 1.
-        enddo.
-        exit.
-      endloop.
-
-* format for each columns of table (w/o columns headers)
-
-      if semaitem-col_typ = &apos;DAT&apos;.
-        if semaitem-col_no &gt; vkeycount.
-          call method lo_spreadsheet-&gt;set_format
-            EXPORTING
-              rangename = str
-              currency  = &apos;&apos;
-              typ       = all
-              no_flush  = no_flush.
-        else.
-          call method lo_spreadsheet-&gt;set_format
-            EXPORTING
-              rangename = str
-              currency  = &apos;&apos;
-              typ       = 0
-              no_flush  = no_flush.
-        endif.
-      elseif semaitem-col_typ = &apos;STR&apos;.
-        call method lo_spreadsheet-&gt;set_format
-          EXPORTING
-            rangename = str
-            currency  = &apos;&apos;
-            typ       = 0
-            no_flush  = no_flush.
-      elseif semaitem-col_typ = &apos;MON&apos;.
-        call method lo_spreadsheet-&gt;set_format
-          EXPORTING
-            rangename = str
-            currency  = &apos;&apos;
-            typ       = 10
-            no_flush  = no_flush.
-      elseif semaitem-col_typ = &apos;N00&apos;.
-        call method lo_spreadsheet-&gt;set_format
-          EXPORTING
-            rangename = str
-            currency  = &apos;&apos;
-            typ       = 1
-            decimals  = 0
-            no_flush  = no_flush.
-      elseif semaitem-col_typ = &apos;N01&apos;.
-        call method lo_spreadsheet-&gt;set_format
-          EXPORTING
-            rangename = str
-            currency  = &apos;&apos;
-            typ       = 1
-            decimals  = 1
-            no_flush  = no_flush.
-      elseif semaitem-col_typ = &apos;N02&apos;.
-        call method lo_spreadsheet-&gt;set_format
-          EXPORTING
-            rangename = str
-            currency  = &apos;&apos;
-            typ       = 1
-            decimals  = 2
-            no_flush  = no_flush.
-      elseif semaitem-col_typ = &apos;N03&apos;.
-        call method lo_spreadsheet-&gt;set_format
-          EXPORTING
-            rangename = str
-            currency  = &apos;&apos;
-            typ       = 1
-            decimals  = 3
-            no_flush  = no_flush.
-      elseif semaitem-col_typ = &apos;N04&apos;.
-        call method lo_spreadsheet-&gt;set_format
-          EXPORTING
-            rangename = str
-            currency  = &apos;&apos;
-            typ       = 1
-            decimals  = 4
-            no_flush  = no_flush.
-      elseif semaitem-col_typ = &apos;NUM&apos;.
-        if dec eq -1.
-          call method lo_spreadsheet-&gt;set_format
-            EXPORTING
-              rangename = str
-              currency  = &apos;&apos;
-              typ       = 1
-              decimals  = 2
-              no_flush  = no_flush.
-        else.
-          call method lo_spreadsheet-&gt;set_format
-            EXPORTING
-              rangename = str
-              currency  = &apos;&apos;
-              typ       = 1
-              decimals  = dec
-              no_flush  = no_flush.
-        endif.
-      elseif semaitem-col_typ = &apos;PCT&apos;.
-        call method lo_spreadsheet-&gt;set_format
-          EXPORTING
-            rangename = str
-            currency  = &apos;&apos;
-            typ       = 3
-            decimals  = 0
-            no_flush  = no_flush.
-      endif.
-
-    endif.
-  endloop.
-
-* get item contents for set_range_data method
-* get currency cell also
-
-  mit = 1.
-
-  data: currcells type soi_cell_table.
-  data: curritem  type soi_cell_item.
-
-  curritem-rows = 1.
-  curritem-columns = 1.
-  curritem-front = -1.
-  curritem-back = -1.
-  curritem-font = &apos;&apos;.
-  curritem-size = -1.
-  curritem-bold = -1.
-  curritem-italic = -1.
-  curritem-align = -1.
-  curritem-frametyp = -1.
-  curritem-framecolor = -1.
-  curritem-currency = &apos;&apos;.
-  curritem-number = 1.
-  curritem-input = -1.
-
-  data: conv_exit(10) type c.
-  data: const type i.
-
-*   Change for Correction request
-*    Initial 10000 lines are missing in Excel Export
-*    if there are only 2 columns in exported List object.
-
-  if datareal gt 2.
-    const = 20000 / datareal.
-  else.
-    const = 20000 / ( datareal + 2 ).
-  endif.
-
-  data: lines type i.
-  data: innerlines type i.
-  data: counter type i.
-  data: curritem2 like curritem.
-  data: curritem3 like curritem.
-  data: length type i.
-  data: found.
-
-* append content table (for method set_range_content)
-
-  loop at &lt;f_excel_tab&gt; assigning &lt;line&gt;.
-
-* save line index to compare with lt_subtot_indexs,
-* to discover line is a subtotal / totale line or not
-* ex use to set &apos;dun display zero in subtotal / total line&apos;
-
-    l_save_index = sy-tabix.
-
-    do datareal times.
-      read table lt_sema into semaitem with key col_no = sy-index.
-      if semaitem-col_src ne 0.
-        assign component semaitem-col_src
-               of structure &lt;line&gt; to &lt;item&gt;.
-      else.
-        assign component sy-index
-               of structure &lt;line&gt; to &lt;item&gt;.
-      endif.
-
-      contentsitem-row = realoverflow.
-
-      if sy-subrc = 0.
-        move semaitem-col_ops to search_item(3).
-        search &apos;ADD#CNT#MIN#MAX#AVG#NOP#DFT#&apos;
-                          for search_item.
-        if sy-subrc ne 0.
-          raise error_in_sema.
-        endif.
-        move semaitem-col_typ to search_item(3).
-        search &apos;NUM#N00#N01#N02#N03#N04#PCT#DAT#MON#STR#&apos;
-                          for search_item.
-        if sy-subrc ne 0.
-          raise error_in_sema.
-        endif.
-        contentsitem-column = sy-index.
-        if semaitem-col_typ eq &apos;DAT&apos; or semaitem-col_typ eq &apos;MON&apos;.
-          if semaitem-col_no &gt; vkeycount.
-
-            &quot; Hinweis 512418
-            &quot; EXCEL bezieht Datumsangaben
-            &quot; auf den 31.12.1899, behandelt
-            &quot; aber 1900 als ein Schaltjahr
-            &quot; d.h. ab 1.3.1900 korrekt
-            &quot; 1.3.1900 als Zahl = 61
-
-            data: genesis type d value &apos;18991230&apos;.
-            data: number_of_days type p.
-* change for date in char format &amp; sema_type = X
-            data: temp_date type d.
-
-            if not &lt;item&gt; is initial and not &lt;item&gt; co &apos; &apos; and not
-            &lt;item&gt; co &apos;0&apos;.
-* change for date in char format &amp; sema_type = X starts
-              if sema_type = &apos;X&apos;.
-                describe field &lt;item&gt; type typ.
-                if typ = &apos;C&apos;.
-                  temp_date = &lt;item&gt;.
-                  number_of_days = temp_date - genesis.
-                else.
-                  number_of_days = &lt;item&gt; - genesis.
-                endif.
-              else.
-                number_of_days = &lt;item&gt; - genesis.
-              endif.
-* change for date in char format &amp; sema_type = X ends
-              if number_of_days &lt; 61.
-                number_of_days = number_of_days - 1.
-              endif.
-
-              set country &apos;DE&apos;.
-              write number_of_days to contentsitem-value
-              no-grouping
-                                        left-justified.
-              set country space.
-              translate contentsitem-value using comma_elim.
-            else.
-              clear contentsitem-value.
-            endif.
-          else.
-            move &lt;item&gt; to contentsitem-value.
-          endif.
-        elseif semaitem-col_typ eq &apos;NUM&apos; or
-               semaitem-col_typ eq &apos;N00&apos; or
-               semaitem-col_typ eq &apos;N01&apos; or
-               semaitem-col_typ eq &apos;N02&apos; or
-               semaitem-col_typ eq &apos;N03&apos; or
-               semaitem-col_typ eq &apos;N04&apos; or
-               semaitem-col_typ eq &apos;PCT&apos;.
-          set country &apos;DE&apos;.
-          describe field &lt;item&gt; type typ.
-
-          if semaitem-col_cur is initial.
-            if typ ne &apos;F&apos;.
-              write &lt;item&gt; to contentsitem-value no-grouping
-                                                 no-sign decimals 14.
-            else.
-              write &lt;item&gt; to contentsitem-value no-grouping
-                                                 no-sign.
-            endif.
-          else.
-* Treat of fixed curreny for column &gt;&gt;Y9CK007319
-            if semaitem-col_cur &lt; 0.
-              semaitem-col_cur = semaitem-col_cur * ( -1 ).
-              select * from tcurx into table lt_tcurx.
-              sort lt_tcurx.
-              read table lt_tcurx into
-                                  wa_tcurx index semaitem-col_cur.
-              if sy-subrc = 0.
-                if typ ne &apos;F&apos;.
-                  write &lt;item&gt; to contentsitem-value no-grouping
-                   currency wa_tcurx-currkey no-sign decimals 14.
-                else.
-                  write &lt;item&gt; to contentsitem-value no-grouping
-                   currency wa_tcurx-currkey no-sign.
-                endif.
-              endif.
-            else.
-              assign component semaitem-col_cur
-                   of structure &lt;line&gt; to &lt;g&gt;.
-* mit = index of recent row
-              curritem-top  = rowmax + mit + li_commentary_rows.
-
-              li_col_pos =  sy-index + i_left - 1.
-              curritem-left = li_col_pos.
-
-* if filed is quantity field (qfieldname ne space)
-* or amount field (cfieldname ne space), then format decimal place
-* corresponding with config
-
-              clear: l_def.
-              read table LT_FIELDCAT_KKBLO assigning &lt;f_fieldcat_line&gt;
-              with key  tabname = l_tabname
-                        tech    = space
-                        no_out  = space
-                        col_pos = semaitem-col_no.
-              IF sy-subrc = 0.
-                IF &lt;f_fieldcat_line&gt;-cfieldname is not initial.
-                  l_def = &apos;C&apos;.
-                else.&quot;if &lt;f_fieldcat_line&gt;-qfieldname is not initial.
-                  l_def = &apos;Q&apos;.
-                ENDIF.
-              ENDIF.
-
-* if field is amount field
-* exporting of amount field base on currency decimal table: TCURX
-              IF l_def = &apos;C&apos;. &quot;field is amount field
-                select single * from tcurx into wa_tcurx
-                  where currkey = &lt;g&gt;.
-* if amount ref to un-know currency -&gt; default decimal  = 2
-                if sy-subrc eq 0.
-                  curritem-decimals = wa_tcurx-currdec.
-                else.
-                  curritem-decimals = 2.
-                endif.
-
-                append curritem to currcells.
-                if typ ne &apos;F&apos;.
-                  write &lt;item&gt; to contentsitem-value
-                                      currency &lt;g&gt;
-                     no-sign no-grouping.
-                else.
-                  write &lt;item&gt; to contentsitem-value
-                     decimals 14      currency &lt;g&gt;
-                     no-sign no-grouping.
-                endif.
-
-* if field is quantity field
-* exporting of quantity field base on quantity decimal table: T006
-
-              else.&quot;if l_def = &apos;Q&apos;. &quot; field is quantity field
-                clear: wa_t006.
-                select single * from t006 into wa_t006
-                  where MSEHI = &lt;g&gt;.
-* if quantity ref to un-know unit-&gt; default decimal  = 2
-                if sy-subrc eq 0.
-                  curritem-decimals = wa_t006-decan.
-                else.
-                  curritem-decimals = 2.
-                endif.
-                append curritem to currcells.
-
-                write &lt;item&gt; to contentsitem-value
-                                    unit &lt;g&gt;
-                   no-sign no-grouping.
-                condense contentsitem-value.
-
-              ENDIF.
-
-            endif.                                          &quot;Y9CK007319
-          endif.
-          condense contentsitem-value.
-
-* add function fieldcat-no zero display
-
-          loop at LT_FIELDCAT_KKBLO assigning &lt;f_fieldcat_line&gt;
-          where tabname = l_tabname
-          and   tech ne &apos;X&apos;
-          and   no_out ne &apos;X&apos;.
-            if &lt;f_fieldcat_line&gt;-col_pos = semaitem-col_no.
-              if &lt;f_fieldcat_line&gt;-no_zero = &apos;X&apos;.
-                if &lt;item&gt; = &apos;0&apos;.
-                  clear: contentsitem-value.
-                endif.
-
-* dun display zero in total/subtotal line too
-
-              else.
-                clear: wa_subtot_indexs.
-                read table lt_subtot_indexs into wa_subtot_indexs
-                with key index = l_save_index.
-                IF sy-subrc = 0.
-                  if &lt;item&gt; = &apos;0&apos;.
-                    clear: contentsitem-value.
-                  endif.
-                ENDIF.
-              endif.
-            endif.
-          endloop.
-          unassign: &lt;f_fieldcat_line&gt;.
-
-          if &lt;item&gt; lt 0.
-            search contentsitem-value for &apos;E&apos;.
-            if sy-fdpos eq 0.
-
-* bring negative sign to front of amount
-
-              translate contentsitem-value using &apos;- &apos;.
-              condense contentsitem-value no-gaps.
-              concatenate &apos;-&apos; contentsitem-value
-                         into contentsitem-value.
-            else.
-              concatenate &apos;-&apos; contentsitem-value
-                         into contentsitem-value.
-            endif.
-          endif.
-          set country space.
-* Hier wird nur die korrekte Kommaseparatierung gemacht, wenn die
-* Zeichen einer
-* Zahl enthalten sind. Das ist f#ƒÂ#r Timestamps, die auch &quot;:&quot; enthalten.
-* F#ƒÂ#r die
-* darf keine Kommaseparierung stattfinden.
-* Changing for correction request - Y6BK041073
-          if contentsitem-value co &apos;0123456789.,-+E &apos;.
-            translate contentsitem-value using comma_elim.
-          endif.
-        else.
-          clear contentsitem-value.
-
-* if type is not numeric -&gt; dun display with zero
-
-          write &lt;item&gt; to contentsitem-value no-zero.
-
-          shift contentsitem-value left deleting leading space.
-
-        endif.
-        append contentsitem to contents.
-      endif.
-    enddo.
-
-    realmit = realmit + 1.
-    realoverflow = realoverflow + 1.
-
-    mit = mit + 1.
-*   overflow = current row index in content table
-    overflow = overflow + 1.
-  endloop.
-
-  unassign: &lt;f_fieldcat_line&gt;.
-
-* set item range for set_range_data method
-
-  testname = mit / const.
-  condense testname.
-
-  concatenate &apos;TEST&apos; testname into testname.
-
-  realoverflow = realoverflow - 1.
-  realmit = realmit - 1.
-  help = realoverflow.
-
-  rangeitem-name = testname.
-  rangeitem-columns = datareal.
-  rangeitem-rows = help.
-  append rangeitem to ranges.
-
-* insert item range dim
-
-  temp2 = rowmax + 1 + li_commentary_rows + realmit - realoverflow.
-
-* items data
-
-  call method lo_spreadsheet-&gt;insert_range_dim
-    EXPORTING
-      name     = testname
-      top      = temp2
-      left     = i_left
-      rows     = help
-      columns  = datareal
-      no_flush = no_flush.
-
-* get columns header contents for set_range_data method
-* export columns header only if no columns header option = space
-
-  data: rowcount type i.
-  data: columncount type i.
-
-  if i_columns_header = &apos;X&apos;.
-
-* append columns header to contents: hkey
-
-    rowcount = 1.
-    do rowmax times.
-      columncount = 1.
-      do hkeycolumns times.
-        loop at lt_hkey into hkeyitem where col_no = columncount
-                                         and row_no   = rowcount.
-        endloop.
-        if sy-subrc = 0.
-          str = hkeyitem-col_name.
-          contentsitem-value = hkeyitem-col_name.
-        else.
-          contentsitem-value = str.
-        endif.
-        contentsitem-column = columncount.
-        contentsitem-row = rowcount.
-        append contentsitem to contents.
-        columncount = columncount + 1.
-      enddo.
-      rowcount = rowcount + 1.
-    enddo.
-
-* incase columns header in multiline
-
-    data: rowmaxtemp type i.
-    if rowmax &gt; 1.
-      rowmaxtemp = rowmax - 1.
-      rowcount = 1.
-      do rowmaxtemp times.
-        columncount = 1.
-        do columnmax times.
-          contentsitem-column = columncount.
-          contentsitem-row    = rowcount.
-          contentsitem-value  = &apos;&apos;.
-          append contentsitem to contents.
-          columncount = columncount + 1.
-        enddo.
-        rowcount = rowcount + 1.
-      enddo.
-    endif.
-
-* append columns header to contents: vkey
-
-    columncount = 1.
-    do columnmax times.
-      loop at lt_vkey into vkeyitem where col_no = columncount.
-      endloop.
-      contentsitem-value = vkeyitem-col_name.
-      contentsitem-row = rowmax.
-      contentsitem-column = columncount.
-      append contentsitem to contents.
-      columncount = columncount + 1.
-    enddo.
-*--------------------------------------------------------------------*
-* set header range for method set_range_data
-* insert header keys range dim
-
-    li_head_top = li_commentary_rows + 1.
-    li_col_pos = i_left.
-
-* insert range headers
-
-    if hkeycolumns ne 0.
-      rangeitem-name = &apos;TESTHKEY&apos;.
-      rangeitem-rows = rowmax.
-      rangeitem-columns = hkeycolumns.
-      append rangeitem to ranges.
-      clear: rangeitem.
-
-      call method lo_spreadsheet-&gt;insert_range_dim
-        EXPORTING
-          name     = &apos;TESTHKEY&apos;
-          top      = li_head_top
-          left     = li_col_pos
-          rows     = rowmax
-          columns  = hkeycolumns
-          no_flush = no_flush.
-    endif.
-  endif.
-
-* format for columns header + total + subtotal
-* ------------------------------------------
-
-  help = rowmax + realmit. &quot; table + header lines
-
-  data: item          type colxxl_t.
-  data: lt_format     type soi_format_table.
-  data: wa_format     like line of lt_format.
-  data: wa_format_temp like line of lt_format.
-
-  field-symbols: &lt;f_source&gt; type any.
-  field-symbols: &lt;f_des&gt;    type any.
-
-* columns header format
-
-  wa_format-front       = -1.
-  wa_format-back        = 15. &quot;grey
-  wa_format-font        = space.
-  wa_format-size        = -1.
-  wa_format-bold        = 1.
-  wa_format-align       = 0.
-  wa_format-frametyp    = -1.
-  wa_format-framecolor  = -1.
-
-* get column header format from input record
-* -&gt; map input format
-
-  if i_columns_header = &apos;X&apos;.
-    wa_format-name        = &apos;TESTHKEY&apos;.
-    if i_format_col_header is not initial.
-      describe field i_format_col_header type l_typ components
-      li_col_num.
-      do li_col_num times.
-        if sy-index ne 1. &quot; dun map range name
-          assign component sy-index of structure i_format_col_header
-          to &lt;f_source&gt;.
-          if &lt;f_source&gt; is not initial.
-            assign component sy-index of structure wa_format to &lt;f_des&gt;.
-            &lt;f_des&gt; = &lt;f_source&gt;.
-            unassign: &lt;f_des&gt;.
-          endif.
-          unassign: &lt;f_source&gt;.
-        endif.
-      enddo.
-
-      clear: li_col_num.
-    endif.
-
-    append wa_format to lt_format.
-  endif.
-
-* Zusammenfassen der Spalten mit gleicher Nachkommastellenzahl
-* collect vertical cells (col)  with the same number of decimal places
-* to increase perfomance in currency cell format
-
-  describe table currcells lines lines.
-  lines = lines - 1.
-  do lines times.
-    describe table currcells lines innerlines.
-    innerlines = innerlines - 1.
-    sort currcells by left top.
-    clear found.
-    do innerlines times.
-      read table currcells index sy-index into curritem.
-      counter = sy-index + 1.
-      read table currcells index counter into curritem2.
-      if curritem-left eq curritem2-left.
-        length = curritem-top + curritem-rows.
-        if length eq curritem2-top.
-          if curritem-decimals eq curritem2-decimals.
-            move curritem to curritem3.
-            curritem3-rows = curritem3-rows + curritem2-rows.
-            curritem-left = -1.
-            modify currcells index sy-index from curritem.
-            curritem2-left = -1.
-            modify currcells index counter from curritem2.
-            append curritem3 to currcells.
-            found = &apos;X&apos;.
-          endif.
-        endif.
-      endif.
-    enddo.
-    if found is initial.
-      exit.
-    endif.
-    delete currcells where left = -1.
-  enddo.
-
-* Zusammenfassen der Zeilen mit gleicher Nachkommastellenzahl
-* collect horizontal cells (row) with the same number of decimal places
-* to increase perfomance in currency cell format
-
-  describe table currcells lines lines.
-  lines = lines - 1.
-  do lines times.
-    describe table currcells lines innerlines.
-    innerlines = innerlines - 1.
-    sort currcells by top left.
-    clear found.
-    do innerlines times.
-      read table currcells index sy-index into curritem.
-      counter = sy-index + 1.
-      read table currcells index counter into curritem2.
-      if curritem-top eq curritem2-top and curritem-rows eq
-      curritem2-rows.
-        length = curritem-left + curritem-columns.
-        if length eq curritem2-left.
-          if curritem-decimals eq curritem2-decimals.
-            move curritem to curritem3.
-            curritem3-columns = curritem3-columns + curritem2-columns.
-            curritem-left = -1.
-            modify currcells index sy-index from curritem.
-            curritem2-left = -1.
-            modify currcells index counter from curritem2.
-            append curritem3 to currcells.
-            found = &apos;X&apos;.
-          endif.
-        endif.
-      endif.
-    enddo.
-    if found is initial.
-      exit.
-    endif.
-    delete currcells where left = -1.
-  enddo.
-* Ende der Zusammenfassung
-
-
-* item data: format for currency cell, corresponding with currency
-
-  call method lo_spreadsheet-&gt;cell_format
-    EXPORTING
-      cells    = currcells
-      no_flush = no_flush.
-
-* item data: write item table content
-
-  call method lo_spreadsheet-&gt;set_ranges_data
-    EXPORTING
-      ranges   = ranges
-      contents = contents
-      no_flush = no_flush.
-
-* whole table range to format all table
-
-  if i_columns_header = &apos;X&apos;.
-    li_head_top = li_commentary_rows + 1.
-  else.
-    li_head_top = li_commentary_rows + 2.
-    help = help - 1.
-  endif.
-
-  call method lo_spreadsheet-&gt;insert_range_dim
-    EXPORTING
-      name     = &apos;WHOLE_TABLE&apos;
-      top      = li_head_top
-      left     = i_left
-      rows     = help
-      columns  = datareal
-      no_flush = no_flush.
-
-* columns width auto fix
-* this parameter = space in case use with exist template
-
-  IF i_columns_autofit = &apos;X&apos;.
-    call method lo_spreadsheet-&gt;fit_widest
-      EXPORTING
-        name     = &apos;WHOLE_TABLE&apos;
-        no_flush = no_flush.
-  ENDIF.
-
-* frame
-* The parameter has 8 bits
-*0 Left margin
-*1 Top marginT
-*2 Bottom margin
-*3 Right margin
-*4 Horizontal line
-*5 Vertical line
-*6 Thinness
-*7 Thickness
-* here 127 = 1111111 6-5-4-3-2-1 mean Thin-ver-hor-right-bot-top-left
-
-* ( final DOI method call, set no_flush = space
-* equal to call method CL_GUI_CFW=&gt;FLUSH )
-
-  call method lo_spreadsheet-&gt;set_frame
-    EXPORTING
-      rangename = &apos;WHOLE_TABLE&apos;
-      typ       = 127
-      color     = 1
-      no_flush  = space
-    IMPORTING
-      error     = lo_error
-      retcode   = lc_retcode.
-
-  error_doi.
-
-* reformat subtotal / total line after format wholw table
-
-  loop at subranges into subrangeitem.
-    l_sub_index = subrangeitem-rows + li_commentary_rows + rowmax.
-
-    call method lo_spreadsheet-&gt;insert_range_dim
-      EXPORTING
-        name     = subrangeitem-name
-        left     = i_left
-        top      = l_sub_index
-        rows     = 1
-        columns  = datareal
-        no_flush = no_flush.
-
-    wa_format-name    = subrangeitem-name.
-
-*   default format:
-*     - clolor: subtotal = light yellow, subtotal = yellow
-*     - frame: box
-
-    IF  subrangeitem-name(3) = &apos;SUB&apos;.
-      wa_format-back = 36. &quot;subtotal line
-      wa_format_temp = i_format_subtotal.
-    else.
-      wa_format-back = 27. &quot;total line
-      wa_format_temp = i_format_total.
-    endif.
-    wa_format-FRAMETYP = 79.
-    wa_format-FRAMEcolor = 1.
-    wa_format-number  = -1.
-    wa_format-align   = -1.
-
-*   get subtoal + total format from intput parameter
-*   overwrite default format
-
-    if wa_format_temp is not initial.
-      describe field wa_format_temp type l_typ components li_col_num.
-      do li_col_num times.
-        if sy-index ne 1. &quot; dun map range name
-          assign component sy-index of structure wa_format_temp
-          to &lt;f_source&gt;.
-          if &lt;f_source&gt; is not initial.
-            assign component sy-index of structure wa_format to &lt;f_des&gt;.
-            &lt;f_des&gt; = &lt;f_source&gt;.
-            unassign: &lt;f_des&gt;.
-          endif.
-          unassign: &lt;f_source&gt;.
-        endif.
-      enddo.
-
-      clear: li_col_num.
-    endif.
-
-    append wa_format to lt_format.
-    clear: wa_format-name.
-    clear: l_sub_index.
-    clear: wa_format_temp.
-
-  endloop.
-
-  if lt_format[] is not initial.
-    call method lo_spreadsheet-&gt;set_ranges_format
-      EXPORTING
-        formattable = lt_format
-        no_flush    = no_flush.
-    refresh: lt_format.
-  endif.
-*--------------------------------------------------------------------*
-  call method lo_spreadsheet-&gt;screen_update
-    EXPORTING
-      updating = &apos;X&apos;.
-
-  call method c_oi_errors=&gt;flush_errors.
-
-  lo_error_w = l_error.
-  lc_retcode = lo_error_w-&gt;error_code.
-
-** catch no_flush -&gt; led to dump ( optional )
-*    go_error = l_error.
-*    gc_retcode = go_error-&gt;error_code.
-*    error_doi.
-
-  clear:
-    lt_sema,
-    wa_sema,
-    lt_hkey,
-    wa_hkey,
-    lt_vkey,
-    wa_vkey,
-    l_n_hrz_keys,
-    l_n_att_cols,
-    l_n_vrt_keys,
-    count,
-    datac,
-    datareal,
-    vkeycount,
-    all,
-    mit,
-    li_col_pos,
-    li_col_num,
-    ranges,
-    rangeitem,
-    contents,
-    contentsitem,
-    semaitem,
-    hkeyitem,
-    vkeyitem,
-    li_commentary_rows,
-    l_retcode,
-    li_head_top,
-    &lt;f_excel_tab&gt;.
-
-  clear:
-     lo_error_w.
-
-  unassign:
-  &lt;line&gt;,
-  &lt;item&gt;,
-  &lt;f_excel_tab&gt;.
-
-*--------------------------------------------------------------------*
-* SESSION 5: SAVE AND CLOSE FILE
-*--------------------------------------------------------------------*
-
-* ex of save path: &apos;FILE://C:\temp\test.xlsx&apos;
-  concatenate &apos;FILE://&apos; I_save_path
-              into ls_path.
-
-  call method lo_proxy-&gt;save_document_to_url
-    EXPORTING
-      no_flush      = &apos;X&apos;
-      url           = ls_path
-    IMPORTING
-      error         = lo_error
-      retcode       = lc_retcode
-    CHANGING
-      document_size = li_document_size.
-
-  error_doi.
-
-* if save successfully -&gt; raise successful message
-*  message i499(sy) with &apos;Document is Exported to &apos; p_path.
-  message i499(sy) with &apos;Data has been exported successfully&apos;.
-
-  clear:
-    ls_path,
-    li_document_size.
-
-  close_document.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_TABLE" VERSION="1" LANGU="E" DESCRIPT="Set cell value from a table" EXPOSURE="2" STATE="1" EDITORDER="7 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_TABLE" SCONAME="IP_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_TABLE" SCONAME="IT_FIELD_CATALOG" VERSION="1" LANGU="E" DESCRIPT="Table binding field catalog" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_T_FIELDCATALOG" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_TABLE" SCONAME="IS_TABLE_SETTINGS" VERSION="1" LANGU="E" DESCRIPT="Excel table binding settings" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_TABLE_SETTINGS" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_TABLE" SCONAME="ES_TABLE_SETTINGS" VERSION="1" LANGU="E" DESCRIPT="Excel table binding settings" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_TABLE_SETTINGS"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="BIND_TABLE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>METHOD bind_table.
-*--------------------------------------------------------------------*
-* issue #230   - Pimp my Code
-*              - Stefan Schmöcker,      (wi p)              2012-12-01
-*              - ...
-*          aligning code
-*          message made to support multilinguality
-*--------------------------------------------------------------------*
-* issue #237   - Check if overlapping areas exist
-*              - Alessandro Iannacci                        2012-12-01
-* changes:     - Added raise if overlaps are detected
-*--------------------------------------------------------------------*
-
-  CONSTANTS:
-              lc_top_left_column              TYPE zexcel_cell_column_alpha VALUE &apos;B&apos;,
-              lc_top_left_row                 TYPE zexcel_cell_row VALUE &apos;3&apos;.
-
-  DATA:
-              lv_row_int                      TYPE zexcel_cell_row,
-              lv_first_row                    TYPE zexcel_cell_row,
-              lv_last_row                     TYPE zexcel_cell_row,
-              lv_column_int                   TYPE zexcel_cell_column,
-              lv_column_alpha                 TYPE zexcel_cell_column_alpha,
-              lt_field_catalog                TYPE zexcel_t_fieldcatalog,
-              lv_id                           TYPE i,
-              lv_rows                         TYPE i,
-              lv_formula                      TYPE string,
-              ls_settings                     TYPE zexcel_s_table_settings,
-              lo_table                        TYPE REF TO zcl_excel_table,
-              lt_column_name_buffer           TYPE SORTED TABLE OF string WITH UNIQUE KEY table_line,
-              lv_value                        TYPE string,
-              lv_syindex                      TYPE char3,
-              lv_errormessage                 TYPE string,                                            &quot;ins issue #237
-
-              lv_columns                      TYPE i,
-              lt_columns                      TYPE zexcel_t_fieldcatalog,
-              lv_maxcol                       TYPE i,
-              lv_maxrow                       TYPE i,
-              lo_iterator                     TYPE REF TO cl_object_collection_iterator,
-              lo_curtable                     TYPE REF TO zcl_excel_table.
-
-  FIELD-SYMBOLS:
-              &lt;ls_field_catalog&gt;              TYPE zexcel_s_fieldcatalog,
-              &lt;ls_field_catalog_custom&gt;       TYPE zexcel_s_fieldcatalog,
-              &lt;fs_table_line&gt;                 TYPE ANY,
-              &lt;fs_fldval&gt;                     TYPE ANY.
-
-  ls_settings = is_table_settings.
-
-  IF ls_settings-top_left_column IS INITIAL.
-    ls_settings-top_left_column = lc_top_left_column.
-  ENDIF.
-
-  IF ls_settings-table_style IS INITIAL.
-    ls_settings-table_style = zcl_excel_table=&gt;builtinstyle_medium2.
-  ENDIF.
-
-  IF ls_settings-top_left_row IS INITIAL.
-    ls_settings-top_left_row = lc_top_left_row.
-  ENDIF.
-
-  IF it_field_catalog IS NOT SUPPLIED.
-    lt_field_catalog = zcl_excel_common=&gt;get_fieldcatalog( ip_table = ip_table ).
-  ELSE.
-    lt_field_catalog = it_field_catalog.
-  ENDIF.
-
-  SORT lt_field_catalog BY position.
-
-*--------------------------------------------------------------------*
-*  issue #237   Check if overlapping areas exist  Start
-*--------------------------------------------------------------------*
-  &quot;Get the number of columns for the current table
-  lt_columns = lt_field_catalog.
-  DELETE lt_columns WHERE dynpfld NE abap_true.
-  DESCRIBE TABLE lt_columns LINES lv_columns.
-
-  &quot;Calculate the top left row of the current table
-  lv_column_int = zcl_excel_common=&gt;convert_column2int( ls_settings-top_left_column ).
-  lv_row_int    = ls_settings-top_left_row.
-
-  &quot;Get number of row for the current table
-  DESCRIBE TABLE ip_table LINES lv_rows.
-
-  &quot;Calculate the bottom right row for the current table
-  lv_maxcol                       = lv_column_int + lv_columns - 1.
-  lv_maxrow                       = lv_row_int    + lv_rows - 1.
-  ls_settings-bottom_right_column = zcl_excel_common=&gt;convert_column2alpha( lv_maxcol ).
-  ls_settings-bottom_right_row    = lv_maxrow.
-
-  lv_column_int                   = zcl_excel_common=&gt;convert_column2int( ls_settings-top_left_column ).
-
-  lo_iterator = me-&gt;tables-&gt;if_object_collection~get_iterator( ).
-  WHILE lo_iterator-&gt;if_object_collection_iterator~has_next( ) EQ abap_true.
-
-    lo_curtable ?= lo_iterator-&gt;if_object_collection_iterator~get_next( ).
-    IF  (    (  ls_settings-top_left_row     GE lo_curtable-&gt;settings-top_left_row                             AND ls_settings-top_left_row     LE lo_curtable-&gt;settings-bottom_right_row )
-          OR
-             (  ls_settings-bottom_right_row GE lo_curtable-&gt;settings-top_left_row                             AND ls_settings-bottom_right_row LE lo_curtable-&gt;settings-bottom_right_row )
-        )
-      AND
-        (    (  lv_column_int GE zcl_excel_common=&gt;convert_column2int( lo_curtable-&gt;settings-top_left_column ) AND lv_column_int LE zcl_excel_common=&gt;convert_column2int( lo_curtable-&gt;settings-bottom_right_column ) )
-          OR
-             (  lv_maxcol     GE zcl_excel_common=&gt;convert_column2int( lo_curtable-&gt;settings-top_left_column ) AND lv_maxcol     LE zcl_excel_common=&gt;convert_column2int( lo_curtable-&gt;settings-bottom_right_column ) )
-        ).
-      lv_errormessage = &apos;Table overlaps with previously bound table and will not be added to worksheet.&apos;(400).
-      RAISE EXCEPTION TYPE zcx_excel
-        EXPORTING
-          error = lv_errormessage.
-    ENDIF.
-
-  ENDWHILE.
-*--------------------------------------------------------------------*
-*  issue #237   Check if overlapping areas exist  End
-*--------------------------------------------------------------------*
-
-  CREATE OBJECT lo_table.
-  lo_table-&gt;settings = ls_settings.
-  lo_table-&gt;set_data( ir_data = ip_table ).
-  lv_id = me-&gt;excel-&gt;get_next_table_id( ).
-  lo_table-&gt;set_id( iv_id = lv_id ).
-*  lo_table-&gt;fieldcat = lt_field_catalog[].
-
-  me-&gt;tables-&gt;add( lo_table ).
-
-* It is better to loop column by column (only visible column)
-  LOOP AT lt_field_catalog ASSIGNING &lt;ls_field_catalog&gt; WHERE dynpfld EQ abap_true.
-
-    lv_column_alpha = zcl_excel_common=&gt;convert_column2alpha( lv_column_int ).
-
-    &quot; Due restrinction of new table object we cannot have two column with the same name
-    &quot; Check if a column with the same name exists, if exists add a counter
-    &quot; If no medium description is provided we try to use small or long
-*    lv_value = &lt;ls_field_catalog&gt;-scrtext_m.
-    IF &lt;ls_field_catalog&gt;-scrtext_m IS NOT INITIAL.
-      lv_value = &lt;ls_field_catalog&gt;-scrtext_m.
-      &lt;ls_field_catalog&gt;-scrtext_l = lv_value.
-    ELSEIF &lt;ls_field_catalog&gt;-scrtext_s IS NOT INITIAL.
-      lv_value = &lt;ls_field_catalog&gt;-scrtext_s.
-      &lt;ls_field_catalog&gt;-scrtext_l = lv_value.
-    ELSEIF &lt;ls_field_catalog&gt;-scrtext_l IS NOT INITIAL.
-      lv_value = &lt;ls_field_catalog&gt;-scrtext_l.
-    ELSE.
-      lv_value = &apos;Column&apos;.  &quot; default value as Excel does
-      &lt;ls_field_catalog&gt;-scrtext_l = lv_value.
-    ENDIF.
-    WHILE 1 = 1.
-
-      READ TABLE lt_column_name_buffer TRANSPORTING NO FIELDS WITH KEY table_line = lv_value BINARY SEARCH.
-      IF sy-subrc &lt;&gt; 0.
-        &lt;ls_field_catalog&gt;-scrtext_l = lv_value.
-        INSERT lv_value INTO TABLE lt_column_name_buffer.
-        EXIT.
-      ELSE.
-        lv_syindex = sy-index.
-        CONCATENATE &lt;ls_field_catalog&gt;-scrtext_l lv_syindex INTO lv_value.
-      ENDIF.
-
-    ENDWHILE.
-    &quot; First of all write column header
-    IF &lt;ls_field_catalog&gt;-style_header IS NOT INITIAL.
-      me-&gt;set_cell( ip_column = lv_column_alpha
-                    ip_row    = lv_row_int
-                    ip_value  = lv_value
-                    ip_style  = &lt;ls_field_catalog&gt;-style_header ).
-    ELSE.
-      me-&gt;set_cell( ip_column = lv_column_alpha
-                    ip_row    = lv_row_int
-                    ip_value  = lv_value ).
-    ENDIF.
-
-    ADD 1 TO lv_row_int.
-    LOOP AT ip_table ASSIGNING &lt;fs_table_line&gt;.
-
-      ASSIGN COMPONENT &lt;ls_field_catalog&gt;-fieldname OF STRUCTURE &lt;fs_table_line&gt; TO &lt;fs_fldval&gt;.
-      IF &lt;ls_field_catalog&gt;-style IS NOT INITIAL.
-        me-&gt;set_cell( ip_column = lv_column_alpha
-                      ip_row    = lv_row_int
-                      ip_value  = &lt;fs_fldval&gt;
-                      ip_style  = &lt;ls_field_catalog&gt;-style ).
-      ELSE.
-        me-&gt;set_cell( ip_column = lv_column_alpha
-                      ip_row    = lv_row_int
-                      ip_value  = &lt;fs_fldval&gt; ).
-      ENDIF.
-      ADD 1 TO lv_row_int.
-
-    ENDLOOP.
-    IF sy-subrc &lt;&gt; 0. &quot;create empty row if table has no data
-      me-&gt;set_cell( ip_column = lv_column_alpha
-                    ip_row    = lv_row_int
-                    ip_value  = space ).
-      ADD 1 TO lv_row_int.
-    ENDIF.
-
-*--------------------------------------------------------------------*
-    &quot; totals
-*--------------------------------------------------------------------*
-    IF &lt;ls_field_catalog&gt;-totals_function IS NOT INITIAL.
-      lv_formula = lo_table-&gt;get_totals_formula( ip_column = &lt;ls_field_catalog&gt;-scrtext_l ip_function = &lt;ls_field_catalog&gt;-totals_function ).
-      IF &lt;ls_field_catalog&gt;-style_total IS NOT INITIAL.
-        me-&gt;set_cell( ip_column   = lv_column_alpha
-                      ip_row      = lv_row_int
-                      ip_formula  = lv_formula
-                      ip_style    = &lt;ls_field_catalog&gt;-style_total ).
-      ELSE.
-        me-&gt;set_cell( ip_column   = lv_column_alpha
-                      ip_row      = lv_row_int
-                      ip_formula  = lv_formula ).
-      ENDIF.
-    ENDIF.
-
-    lv_row_int = ls_settings-top_left_row.
-    ADD 1 TO lv_column_int.
-
-*--------------------------------------------------------------------*
-    &quot; conditional formatting
-*--------------------------------------------------------------------*
-    IF &lt;ls_field_catalog&gt;-cond_style IS NOT INITIAL.
-      lv_first_row    = ls_settings-top_left_row + 1. &quot; +1 to exclude header
-      lv_last_row     = ls_settings-top_left_row + lv_rows.
-      &lt;ls_field_catalog&gt;-cond_style-&gt;set_range( ip_start_column  = lv_column_alpha
-                                                ip_start_row     = lv_first_row
-                                                ip_stop_column   = lv_column_alpha
-                                                ip_stop_row      = lv_last_row ).
-    ENDIF.
-
-  ENDLOOP.
-
-*--------------------------------------------------------------------*
-  &quot; Set field catalog
-*--------------------------------------------------------------------*
-  lo_table-&gt;fieldcat = lt_field_catalog[].
-
-  es_table_settings = ls_settings.
-  es_table_settings-bottom_right_column = lv_column_alpha.
-  es_table_settings-bottom_right_row    = ls_settings-top_left_row + lv_rows + 1. &quot;Last rows
-
-
-ENDMETHOD.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CALCULATE_CELL_WIDTH" VERSION="1" LANGU="E" DESCRIPT="Calculate width of cell" EXPOSURE="0" STATE="1" EDITORDER="8 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CALCULATE_CELL_WIDTH" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CALCULATE_CELL_WIDTH" SCONAME="IP_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CALCULATE_CELL_WIDTH" SCONAME="EP_WIDTH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="I"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CALCULATE_CELL_WIDTH" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method CALCULATE_CELL_WIDTH.
-  DATA: cell_value    TYPE zexcel_cell_value,
-        guid          TYPE zexcel_cell_style,
-        stylemapping  TYPE zexcel_s_stylemapping.
-
-  me-&gt;get_cell( EXPORTING ip_column = ip_column  &quot; Cell Column
-                          ip_row    = ip_row      &quot; Cell Row
-                IMPORTING ep_value  = cell_value
-                          ep_guid   = guid ).&quot; Cell Value ).
-
-
-  ep_width = STRLEN( cell_value ).
-  TRY.
-      stylemapping = me-&gt;excel-&gt;get_style_to_guid( guid ).
-    CATCH zcx_excel.
-      EXIT.  &quot; Do nothing if no style was found
-  ENDTRY.
-
-  IF stylemapping-complete_stylex-font-size = &apos;X&apos;.
-    ep_width = ep_width * stylemapping-complete_style-font-size / 11.
-  ENDIF.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CALCULATE_COLUMN_WIDTHS" VERSION="1" LANGU="E" DESCRIPT="Calculate widths for auto-size columns" EXPOSURE="2" STATE="1" EDITORDER="9 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CALCULATE_COLUMN_WIDTHS" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method CALCULATE_COLUMN_WIDTHS.
-  TYPES:
-  BEGIN OF t_auto_size,
-    col_index TYPE int4,
-    width     TYPE float,
-  END   OF t_auto_size.
-  TYPES: tt_auto_size TYPE TABLE OF t_auto_size.
-
-  DATA: column_dimensions TYPE zexcel_t_worksheet_columndime.
-  DATA: column_dimension  TYPE REF TO zcl_excel_worksheet_columndime.
-
-  DATA: auto_size   TYPE flag.
-  DATA: auto_sizes  TYPE tt_auto_size.
-*  DATA: col_alpha   TYPE zexcel_cell_column_alpha.&quot; issue #155 - less restrictive typing for ip_column
-  DATA: cell_value  TYPE zexcel_cell_value.
-  DATA: cell_style  TYPE REF TO zcl_excel_style.
-  DATA: count       TYPE int4.
-  DATA: highest_row TYPE int4.
-  DATA: width       TYPE i.
-
-  FIELD-SYMBOLS: &lt;column_dimension&gt; LIKE LINE OF column_dimensions.
-  FIELD-SYMBOLS: &lt;auto_size&gt;        LIKE LINE OF auto_sizes.
-
-  column_dimensions[] = me-&gt;get_column_dimensions( ).
-  LOOP AT column_dimensions ASSIGNING &lt;column_dimension&gt;.
-    auto_size = &lt;column_dimension&gt;-column_dimension-&gt;get_auto_size( ).
-    IF auto_size = abap_true.
-      APPEND INITIAL LINE TO auto_sizes ASSIGNING &lt;auto_size&gt;.
-      &lt;auto_size&gt;-col_index = &lt;column_dimension&gt;-column_dimension-&gt;get_column_index( ).
-      &lt;auto_size&gt;-width     = -1.
-    ENDIF.
-  ENDLOOP.
-
-  &quot; There is only something to do if there are some auto-size columns
-  IF NOT auto_sizes IS INITIAL.
-    highest_row = me-&gt;get_highest_row( ).
-    LOOP AT auto_sizes ASSIGNING &lt;auto_size&gt;.
-*      col_alpha = zcl_excel_common=&gt;convert_column2alpha( &lt;auto_size&gt;-col_index ).&quot; issue #155 - less restrictive typing for ip_column
-      count = 1.
-      WHILE count &lt;= highest_row.
-* Start of change # issue 139 - Dateretention of cellstyles
-*        IF cell_style IS BOUND.
-*          CREATE OBJECT cell_style.
-*        ENDIF.
-*        me-&gt;get_cell(
-*          EXPORTING
-*            ip_column = col_alpha  &quot; Cell Column
-*            ip_row    = count      &quot; Cell Row
-*          IMPORTING
-*            ep_value  = cell_value &quot; Cell Value
-*            ep_style  = cell_style &quot; Request Cell Style as well
-*        ).
-*        &quot; For an easy start we just take the number of characters as the width
-*        width = strlen( cell_value ).
-*        &quot; Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker
-*        &quot; Calculate width using Font Size and Font Type
-*        IF    cell_style IS BOUND
-*          AND cell_style-&gt;font IS BOUND.
-*          width = cell_style-&gt;font-&gt;calculate_text_width( cell_value ).
-*        ENDIF.
-*        width = calculate_cell_width( ip_column = col_alpha                &quot; issue #155 - less restrictive typing for ip_column
-        width = calculate_cell_width( ip_column = &lt;auto_size&gt;-col_index     &quot; issue #155 - less restrictive typing for ip_column
-                                      ip_row    = count ).
-* End of change # issue 139 - Dateretention of cellstyles
-        IF width &gt; &lt;auto_size&gt;-width.
-          &lt;auto_size&gt;-width = width.
-        ENDIF.
-        count = count + 1.
-      ENDWHILE.
-*      column_dimension = me-&gt;get_column_dimension( col_alpha ).            &quot; issue #155 - less restrictive typing for ip_column
-      column_dimension = me-&gt;get_column_dimension( &lt;auto_size&gt;-col_index ). &quot; issue #155 - less restrictive typing for ip_column
-      column_dimension-&gt;set_width( &lt;auto_size&gt;-width ).
-    ENDLOOP.
-  ENDIF.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" VERSION="1" LANGU="E" DESCRIPT="Change cell style" EXPOSURE="2" STATE="1" EDITORDER="10 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_COMPLETE" VERSION="1" LANGU="E" DESCRIPT="Values for Cellstyles ( 1 structure holds all )" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_COMPLETE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XCOMPLETE" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cellstyles ( 1 structure holds all )" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_COMPLETE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT" VERSION="1" LANGU="E" DESCRIPT="Values for Cellstyles - Font" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_FONT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XFONT" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cellstyles - Font" CMPTYPE="1" MTDTYPE="0" EDITORDER="6 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_FONT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL" VERSION="1" LANGU="E" DESCRIPT="Values for Cellstyles - Fill" CMPTYPE="1" MTDTYPE="0" EDITORDER="7 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_FILL" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XFILL" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cellstyles - Fill" CMPTYPE="1" MTDTYPE="0" EDITORDER="8 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_FILL" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS" VERSION="1" LANGU="E" DESCRIPT="Values for Cellstyles - Borders" CMPTYPE="1" MTDTYPE="0" EDITORDER="9 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_BORDERS" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XBORDERS" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cellstyles - Borders" CMPTYPE="1" MTDTYPE="0" EDITORDER="10 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_BORDERS" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_ALIGNMENT" VERSION="1" LANGU="E" DESCRIPT="Values for Cellstyles - Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="11 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_ALIGNMENT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XALIGNMENT" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cellstyles - Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="12 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_ALIGNMENT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_NUMBER_FORMAT_FORMAT_CODE" VERSION="1" LANGU="E" DESCRIPT="Values for Cellstyles - Number Format" CMPTYPE="1" MTDTYPE="0" EDITORDER="13 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_NUMBER_FORMAT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_PROTECTION" VERSION="1" LANGU="E" DESCRIPT="Values for Cellstyles - Protection" CMPTYPE="1" MTDTYPE="0" EDITORDER="14 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_PROTECTION" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XPROTECTION" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cellstyles - Protection" CMPTYPE="1" MTDTYPE="0" EDITORDER="15 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_PROTECTION" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_BOLD" VERSION="1" LANGU="E" DESCRIPT="General Flag" CMPTYPE="1" MTDTYPE="0" EDITORDER="16 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_COLOR" VERSION="1" LANGU="E" DESCRIPT="Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="17 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_STYLE_COLOR" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_COLOR_RGB" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="18 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_ARGB" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_COLOR_INDEXED" VERSION="1" LANGU="E" DESCRIPT="Indexed color value" CMPTYPE="1" MTDTYPE="0" EDITORDER="19 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_INDEXED" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_COLOR_THEME" VERSION="1" LANGU="E" DESCRIPT="Theme Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="20 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_THEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_COLOR_TINT" VERSION="1" LANGU="E" DESCRIPT="Tint" CMPTYPE="1" MTDTYPE="0" EDITORDER="21 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_TINT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_FAMILY" VERSION="1" LANGU="E" DESCRIPT="Font family" CMPTYPE="1" MTDTYPE="0" EDITORDER="22 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_FONT_FAMILY" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_ITALIC" VERSION="1" LANGU="E" DESCRIPT="General Flag" CMPTYPE="1" MTDTYPE="0" EDITORDER="23 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_NAME" VERSION="1" LANGU="E" DESCRIPT="Font name" CMPTYPE="1" MTDTYPE="0" EDITORDER="24 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_FONT_NAME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_SCHEME" VERSION="1" LANGU="E" DESCRIPT="Font scheme" CMPTYPE="1" MTDTYPE="0" EDITORDER="25 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_FONT_SCHEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_SIZE" VERSION="1" LANGU="E" DESCRIPT="Font size" CMPTYPE="1" MTDTYPE="0" EDITORDER="26 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_FONT_SIZE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_STRIKETHROUGH" VERSION="1" LANGU="E" DESCRIPT="General Flag" CMPTYPE="1" MTDTYPE="0" EDITORDER="27 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_UNDERLINE" VERSION="1" LANGU="E" DESCRIPT="General Flag" CMPTYPE="1" MTDTYPE="0" EDITORDER="28 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FONT_UNDERLINE_MODE" VERSION="1" LANGU="E" DESCRIPT="Font underline" CMPTYPE="1" MTDTYPE="0" EDITORDER="29 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_FONT_UNDERLINE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_FILLTYPE" VERSION="1" LANGU="E" DESCRIPT="Fill Type" CMPTYPE="1" MTDTYPE="0" EDITORDER="30 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_FILL_TYPE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_ROTATION" VERSION="1" LANGU="E" DESCRIPT="Rotation" CMPTYPE="1" MTDTYPE="0" EDITORDER="31 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_ROTATION" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_FGCOLOR" VERSION="1" LANGU="E" DESCRIPT="Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="32 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_STYLE_COLOR" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_FGCOLOR_RGB" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="33 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_ARGB" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_FGCOLOR_INDEXED" VERSION="1" LANGU="E" DESCRIPT="Indexed color value" CMPTYPE="1" MTDTYPE="0" EDITORDER="34 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_INDEXED" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_FGCOLOR_THEME" VERSION="1" LANGU="E" DESCRIPT="Theme Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="35 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_THEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_FGCOLOR_TINT" VERSION="1" LANGU="E" DESCRIPT="Tint" CMPTYPE="1" MTDTYPE="0" EDITORDER="36 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_TINT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_BGCOLOR" VERSION="1" LANGU="E" DESCRIPT="Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="37 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_STYLE_COLOR" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_BGCOLOR_RGB" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="38 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_ARGB" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_BGCOLOR_INDEXED" VERSION="1" LANGU="E" DESCRIPT="Indexed color value" CMPTYPE="1" MTDTYPE="0" EDITORDER="39 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_INDEXED" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_BGCOLOR_THEME" VERSION="1" LANGU="E" DESCRIPT="Theme Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="40 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_THEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_FILL_BGCOLOR_TINT" VERSION="1" LANGU="E" DESCRIPT="Tint" CMPTYPE="1" MTDTYPE="0" EDITORDER="41 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_TINT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_ALLBORDERS" VERSION="1" LANGU="E" DESCRIPT="Values for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="42 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XBORDERS_ALLBORDERS" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="43 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DIAGONAL" VERSION="1" LANGU="E" DESCRIPT="Values for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="44 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XBORDERS_DIAGONAL" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="45 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DIAGONAL_MODE" VERSION="1" LANGU="E" DESCRIPT="Diagonal" CMPTYPE="1" MTDTYPE="0" EDITORDER="46 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_DIAGONAL" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DOWN" VERSION="1" LANGU="E" DESCRIPT="Values for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="47 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XBORDERS_DOWN" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="48 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_LEFT" VERSION="1" LANGU="E" DESCRIPT="Values for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="49 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XBORDERS_LEFT" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="50 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_RIGHT" VERSION="1" LANGU="E" DESCRIPT="Values for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="51 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XBORDERS_RIGHT" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="52 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_TOP" VERSION="1" LANGU="E" DESCRIPT="Values for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="53 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLE_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_XBORDERS_TOP" VERSION="1" LANGU="E" DESCRIPT="Changeflag for Cells - border" CMPTYPE="1" MTDTYPE="0" EDITORDER="54 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CSTYLEX_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_ALIGNMENT_HORIZONTAL" VERSION="1" LANGU="E" DESCRIPT="Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="55 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_ALIGNMENT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_ALIGNMENT_VERTICAL" VERSION="1" LANGU="E" DESCRIPT="Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="56 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_ALIGNMENT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_ALIGNMENT_TEXTROTATION" VERSION="1" LANGU="E" DESCRIPT="Text Rotation" CMPTYPE="1" MTDTYPE="0" EDITORDER="57 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_TEXT_ROTATION" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_ALIGNMENT_WRAPTEXT" VERSION="1" LANGU="E" DESCRIPT="General Flag" CMPTYPE="1" MTDTYPE="0" EDITORDER="58 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_ALIGNMENT_SHRINKTOFIT" VERSION="1" LANGU="E" DESCRIPT="General Flag" CMPTYPE="1" MTDTYPE="0" EDITORDER="59 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_ALIGNMENT_INDENT" VERSION="1" LANGU="E" DESCRIPT="Indent" CMPTYPE="1" MTDTYPE="0" EDITORDER="60 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_INDENT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_PROTECTION_HIDDEN" VERSION="1" LANGU="E" DESCRIPT="Cell protection indicator" CMPTYPE="1" MTDTYPE="0" EDITORDER="61 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_PROTECTION" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_PROTECTION_LOCKED" VERSION="1" LANGU="E" DESCRIPT="Cell protection indicator" CMPTYPE="1" MTDTYPE="0" EDITORDER="62 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_PROTECTION" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_ALLBORDERS_STYLE" VERSION="1" LANGU="E" DESCRIPT="Border style" CMPTYPE="1" MTDTYPE="0" EDITORDER="63 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_ALLBORDERS_COLOR" VERSION="1" LANGU="E" DESCRIPT="Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="64 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_STYLE_COLOR" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_ALLBO_COLOR_RGB" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="65 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_ARGB" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_ALLBO_COLOR_INDEXED" VERSION="1" LANGU="E" DESCRIPT="Indexed color value" CMPTYPE="1" MTDTYPE="0" EDITORDER="66 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_INDEXED" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_ALLBO_COLOR_THEME" VERSION="1" LANGU="E" DESCRIPT="Theme Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="67 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_THEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_ALLBO_COLOR_TINT" VERSION="1" LANGU="E" DESCRIPT="Tint" CMPTYPE="1" MTDTYPE="0" EDITORDER="68 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_TINT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DIAGONAL_STYLE" VERSION="1" LANGU="E" DESCRIPT="Border style" CMPTYPE="1" MTDTYPE="0" EDITORDER="69 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DIAGONAL_COLOR" VERSION="1" LANGU="E" DESCRIPT="Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="70 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_STYLE_COLOR" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DIAGONAL_COLOR_RGB" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="71 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_ARGB" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DIAGONAL_COLOR_INDE" VERSION="1" LANGU="E" DESCRIPT="Indexed color value" CMPTYPE="1" MTDTYPE="0" EDITORDER="72 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_INDEXED" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DIAGONAL_COLOR_THEM" VERSION="1" LANGU="E" DESCRIPT="Theme Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="73 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_THEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DIAGONAL_COLOR_TINT" VERSION="1" LANGU="E" DESCRIPT="Tint" CMPTYPE="1" MTDTYPE="0" EDITORDER="74 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_TINT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DOWN_STYLE" VERSION="1" LANGU="E" DESCRIPT="Border style" CMPTYPE="1" MTDTYPE="0" EDITORDER="75 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DOWN_COLOR" VERSION="1" LANGU="E" DESCRIPT="Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="76 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_STYLE_COLOR" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DOWN_COLOR_RGB" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="77 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_ARGB" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DOWN_COLOR_INDEXED" VERSION="1" LANGU="E" DESCRIPT="Indexed color value" CMPTYPE="1" MTDTYPE="0" EDITORDER="78 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_INDEXED" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DOWN_COLOR_THEME" VERSION="1" LANGU="E" DESCRIPT="Theme Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="79 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_THEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_DOWN_COLOR_TINT" VERSION="1" LANGU="E" DESCRIPT="Tint" CMPTYPE="1" MTDTYPE="0" EDITORDER="80 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_TINT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_LEFT_STYLE" VERSION="1" LANGU="E" DESCRIPT="Border style" CMPTYPE="1" MTDTYPE="0" EDITORDER="81 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_LEFT_COLOR" VERSION="1" LANGU="E" DESCRIPT="Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="82 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_STYLE_COLOR" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_LEFT_COLOR_RGB" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="83 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_ARGB" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_LEFT_COLOR_INDEXED" VERSION="1" LANGU="E" DESCRIPT="Indexed color value" CMPTYPE="1" MTDTYPE="0" EDITORDER="84 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_INDEXED" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_LEFT_COLOR_THEME" VERSION="1" LANGU="E" DESCRIPT="Theme Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="85 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_THEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_LEFT_COLOR_TINT" VERSION="1" LANGU="E" DESCRIPT="Tint" CMPTYPE="1" MTDTYPE="0" EDITORDER="86 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_TINT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_RIGHT_STYLE" VERSION="1" LANGU="E" DESCRIPT="Border style" CMPTYPE="1" MTDTYPE="0" EDITORDER="87 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_RIGHT_COLOR" VERSION="1" LANGU="E" DESCRIPT="Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="88 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_STYLE_COLOR" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_RIGHT_COLOR_RGB" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="89 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_ARGB" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_RIGHT_COLOR_INDEXED" VERSION="1" LANGU="E" DESCRIPT="Indexed color value" CMPTYPE="1" MTDTYPE="0" EDITORDER="90 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_INDEXED" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_RIGHT_COLOR_THEME" VERSION="1" LANGU="E" DESCRIPT="Theme Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="91 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_THEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_RIGHT_COLOR_TINT" VERSION="1" LANGU="E" DESCRIPT="Tint" CMPTYPE="1" MTDTYPE="0" EDITORDER="92 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_TINT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_TOP_STYLE" VERSION="1" LANGU="E" DESCRIPT="Border style" CMPTYPE="1" MTDTYPE="0" EDITORDER="93 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_BORDER" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_TOP_COLOR" VERSION="1" LANGU="E" DESCRIPT="Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="94 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_STYLE_COLOR" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_TOP_COLOR_RGB" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="95 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_ARGB" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_TOP_COLOR_INDEXED" VERSION="1" LANGU="E" DESCRIPT="Indexed color value" CMPTYPE="1" MTDTYPE="0" EDITORDER="96 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_INDEXED" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_TOP_COLOR_THEME" VERSION="1" LANGU="E" DESCRIPT="Theme Color" CMPTYPE="1" MTDTYPE="0" EDITORDER="97 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_THEME" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="IP_BORDERS_TOP_COLOR_TINT" VERSION="1" LANGU="E" DESCRIPT="Tint" CMPTYPE="1" MTDTYPE="0" EDITORDER="98 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_STYLE_COLOR_TINT" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="EP_GUID" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="99 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CHANGE_CELL_STYLE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method CHANGE_CELL_STYLE.
-  &quot; issue # 139
-  DATA: stylemapping    TYPE zexcel_s_stylemapping,
-
-        complete_style  TYPE zexcel_s_cstyle_complete,
-        complete_stylex TYPE zexcel_s_cstylex_complete,
-
-        borderx         TYPE zexcel_s_cstylex_border,
-        l_guid          type OLTPGUID16.   &quot;issue # 177
-
-* We have a lot of parameters.  Use some macros to make the coding more structured
-
-  DEFINE clear_initial_colorxfields.
-    if &amp;1-rgb is initial.
-      clear &amp;2-rgb.
-    endif.
-    if &amp;1-indexed is initial.
-      clear &amp;2-indexed.
-    endif.
-    if &amp;1-theme is initial.
-      clear &amp;2-theme.
-    endif.
-    if &amp;1-tint is initial.
-      clear &amp;2-tint.
-    endif.
-  END-OF-DEFINITION.
-
-  DEFINE move_supplied_borders.
-    if ip_&amp;1 is supplied.  &quot; only act if parameter was supplied
-      if ip_x&amp;1 is supplied.  &quot;
-        borderx = ip_x&amp;1.          &quot; use supplied x-parameter
-      else.
-        clear borderx with &apos;X&apos;.
-* clear in a way that would be expected to work easily
-        if ip_&amp;1-border_style is  initial.
-          clear borderx-border_style.
-        endif.
-        clear_initial_colorxfields ip_&amp;1-border_color borderx-border_color.
-      endif.
-      move-corresponding ip_&amp;1   to complete_style-&amp;2.
-      move-corresponding borderx to complete_stylex-&amp;2.
-    endif.
-  END-OF-DEFINITION.
-
-* First get current stylsettings
-  TRY.
-      me-&gt;get_cell( EXPORTING ip_column = ip_column  &quot; Cell Column
-                              ip_row    = ip_row      &quot; Cell Row
-                    IMPORTING ep_guid   = l_guid ).&quot; Cell Value ).  &quot;issue # 177
-
-
-      stylemapping = me-&gt;excel-&gt;get_style_to_guid( l_guid ).        &quot;issue # 177
-      complete_style  = stylemapping-complete_style.
-      complete_stylex = stylemapping-complete_stylex.
-    CATCH zcx_excel.
-* Error --&gt; use submitted style
-  ENDTRY.
-
-*  move_supplied_multistyles: complete.
-  IF ip_complete IS SUPPLIED.
-    IF ip_xcomplete IS NOT SUPPLIED.
-      RAISE EXCEPTION TYPE zcx_excel
-        EXPORTING
-          error = &apos;Complete styleinfo has to be supplied with corresponding X-field&apos;.
-    ENDIF.
-    MOVE-CORRESPONDING ip_complete  TO complete_style.
-    MOVE-CORRESPONDING ip_xcomplete TO complete_stylex.
-  ENDIF.
-
-
-
-  IF ip_font IS SUPPLIED.
-    DATA: fontx LIKE ip_xfont.
-    IF ip_xfont IS SUPPLIED.
-      fontx = ip_xfont.
-    ELSE.
-* Only supplied values should be used - exception: Flags bold and italic strikethrough underline
-      MOVE &apos;X&apos; TO: fontx-bold,
-                   fontx-italic,
-                   fontx-strikethrough,
-                   fontx-underline_mode.
-      CLEAR fontx-color WITH &apos;X&apos;.
-      clear_initial_colorxfields ip_font-color fontx-color.
-      IF ip_font-family IS NOT INITIAL.
-        fontx-family = &apos;X&apos;.
-      ENDIF.
-      IF ip_font-name IS NOT INITIAL.
-        fontx-name = &apos;X&apos;.
-      ENDIF.
-      IF ip_font-scheme IS NOT INITIAL.
-        fontx-scheme = &apos;X&apos;.
-      ENDIF.
-      IF ip_font-size IS NOT INITIAL.
-        fontx-size = &apos;X&apos;.
-      ENDIF.
-      IF ip_font-underline_mode IS NOT INITIAL.
-        fontx-underline_mode = &apos;X&apos;.
-      ENDIF.
-    ENDIF.
-    MOVE-CORRESPONDING ip_font  TO complete_style-font.
-    MOVE-CORRESPONDING fontx    TO complete_stylex-font.
-* Correction for undeline mode
-  ENDIF.
-
-  IF ip_fill IS SUPPLIED.
-    DATA: fillx LIKE ip_xfill.
-    IF ip_xfill IS SUPPLIED.
-      fillx = ip_xfill.
-    ELSE.
-      CLEAR fillx WITH &apos;X&apos;.
-      IF ip_fill-filltype IS INITIAL.
-        CLEAR fillx-filltype.
-      ENDIF.
-      clear_initial_colorxfields ip_fill-fgcolor fillx-fgcolor.
-      clear_initial_colorxfields ip_fill-bgcolor fillx-bgcolor.
-
-    ENDIF.
-    MOVE-CORRESPONDING ip_fill  TO complete_style-fill.
-    MOVE-CORRESPONDING fillx    TO complete_stylex-fill.
-  ENDIF.
-
-
-  IF ip_borders IS SUPPLIED.
-    DATA: bordersx LIKE ip_xborders.
-    IF ip_xborders IS SUPPLIED.
-      bordersx = ip_xborders.
-    ELSE.
-      CLEAR bordersx WITH &apos;X&apos;.
-      IF ip_borders-allborders-border_style IS INITIAL.
-        CLEAR bordersx-allborders-border_style.
-      ENDIF.
-      IF ip_borders-diagonal-border_style IS INITIAL.
-        CLEAR bordersx-diagonal-border_style.
-      ENDIF.
-      IF ip_borders-down-border_style IS INITIAL.
-        CLEAR bordersx-down-border_style.
-      ENDIF.
-      IF ip_borders-left-border_style IS INITIAL.
-        CLEAR bordersx-left-border_style.
-      ENDIF.
-      IF ip_borders-right-border_style IS INITIAL.
-        CLEAR bordersx-right-border_style.
-      ENDIF.
-      IF ip_borders-top-border_style IS INITIAL.
-        CLEAR bordersx-top-border_style.
-      ENDIF.
-      clear_initial_colorxfields ip_borders-allborders-border_color bordersx-allborders-border_color.
-      clear_initial_colorxfields ip_borders-diagonal-border_color   bordersx-diagonal-border_color.
-      clear_initial_colorxfields ip_borders-down-border_color       bordersx-down-border_color.
-      clear_initial_colorxfields ip_borders-left-border_color       bordersx-left-border_color.
-      clear_initial_colorxfields ip_borders-right-border_color      bordersx-right-border_color.
-      clear_initial_colorxfields ip_borders-top-border_color        bordersx-top-border_color.
-
-    ENDIF.
-    MOVE-CORRESPONDING ip_borders  TO complete_style-borders.
-    MOVE-CORRESPONDING bordersx    TO complete_stylex-borders.
-  ENDIF.
-
-  IF ip_alignment IS SUPPLIED.
-    DATA: alignmentx LIKE ip_xalignment.
-    IF ip_xalignment IS SUPPLIED.
-      alignmentx = ip_xalignment.
-    ELSE.
-      CLEAR alignmentx WITH &apos;X&apos;.
-      IF ip_alignment-horizontal IS INITIAL.
-        CLEAR alignmentx-horizontal.
-      ENDIF.
-      IF ip_alignment-vertical IS INITIAL.
-        CLEAR alignmentx-vertical.
-      ENDIF.
-    ENDIF.
-    MOVE-CORRESPONDING ip_alignment  TO complete_style-alignment.
-    MOVE-CORRESPONDING alignmentx    TO complete_stylex-alignment.
-  ENDIF.
-
-  IF ip_protection IS SUPPLIED.
-    MOVE-CORRESPONDING ip_alignment  TO complete_style-alignment.
-    IF ip_xprotection IS SUPPLIED.
-      MOVE-CORRESPONDING ip_xprotection TO complete_stylex-protection.
-    ELSE.
-      IF ip_protection-hidden IS NOT INITIAL.
-        complete_style-protection-hidden = &apos;X&apos;.
-      ENDIF.
-      IF ip_protection-locked IS NOT INITIAL.
-        complete_style-protection-locked = &apos;X&apos;.
-      ENDIF.
-    ENDIF.
-  ENDIF.
-
-
-  move_supplied_borders    : borders_allborders borders-allborders,
-                             borders_diagonal   borders-diagonal  ,
-                             borders_down       borders-down      ,
-                             borders_left       borders-left      ,
-                             borders_right      borders-right     ,
-                             borders_top        borders-top       .
-
-  DEFINE move_supplied_singlestyles.
-    if ip_&amp;1 is supplied.
-      complete_style-&amp;2 = ip_&amp;1.
-      complete_stylex-&amp;2 = &apos;X&apos;.
-    endif.
-  END-OF-DEFINITION.
-
-  move_supplied_singlestyles: number_format_format_code  number_format-format_code,
-                              font_bold                     font-bold,
-                              font_color                    font-color,
-                              font_color_rgb                font-color-rgb,
-                              font_color_indexed            font-color-indexed,
-                              font_color_theme              font-color-theme,
-                              font_color_tint               font-color-tint,
-
-                              font_family                   font-family,
-                              font_italic                   font-italic,
-                              font_name                     font-name,
-                              font_scheme                   font-scheme,
-                              font_size                     font-size,
-                              font_strikethrough            font-strikethrough,
-                              font_underline                font-underline,
-                              font_underline_mode           font-underline_mode,
-                              fill_filltype                 fill-filltype,
-                              fill_rotation                 fill-rotation,
-                              fill_fgcolor                  fill-fgcolor,
-                              fill_fgcolor_rgb              fill-fgcolor-rgb,
-                              fill_fgcolor_indexed          fill-fgcolor-indexed,
-                              fill_fgcolor_theme            fill-fgcolor-theme,
-                              fill_fgcolor_tint             fill-fgcolor-tint,
-
-                              fill_bgcolor                  fill-bgcolor,
-                              fill_bgcolor_rgb              fill-bgcolor-rgb,
-                              fill_bgcolor_indexed          fill-bgcolor-indexed,
-                              fill_bgcolor_theme            fill-bgcolor-theme,
-                              fill_bgcolor_tint             fill-bgcolor-tint,
-
-                              borders_diagonal_mode         borders-diagonal_mode,
-                              alignment_horizontal          alignment-horizontal,
-                              alignment_vertical            alignment-vertical,
-                              alignment_textrotation        alignment-textrotation,
-                              alignment_wraptext            alignment-wraptext,
-                              alignment_shrinktofit         alignment-shrinktofit,
-                              alignment_indent              alignment-indent,
-                              protection_hidden             protection-hidden,
-                              protection_locked             protection-locked,
-
-                              borders_allborders_style      borders-allborders-border_style,
-                              borders_allborders_color      borders-allborders-border_color,
-                              borders_allbo_color_rgb       borders-allborders-border_color-rgb,
-                              borders_allbo_color_indexed   borders-allborders-border_color-indexed,
-                              borders_allbo_color_theme     borders-allborders-border_color-theme,
-                              borders_allbo_color_tint      borders-allborders-border_color-tint,
-
-                              borders_diagonal_style        borders-diagonal-border_style,
-                              borders_diagonal_color        borders-diagonal-border_color,
-                              borders_diagonal_color_rgb    borders-diagonal-border_color-rgb,
-                              borders_diagonal_color_inde   borders-diagonal-border_color-indexed,
-                              borders_diagonal_color_them   borders-diagonal-border_color-theme,
-                              borders_diagonal_color_tint   borders-diagonal-border_color-tint,
-
-                              borders_down_style            borders-down-border_style,
-                              borders_down_color            borders-down-border_color,
-                              borders_down_color_rgb        borders-down-border_color-rgb,
-                              borders_down_color_indexed    borders-down-border_color-indexed,
-                              borders_down_color_theme      borders-down-border_color-theme,
-                              borders_down_color_tint       borders-down-border_color-tint,
-
-                              borders_left_style            borders-left-border_style,
-                              borders_left_color            borders-left-border_color,
-                              borders_left_color_rgb        borders-left-border_color-rgb,
-                              borders_left_color_indexed    borders-left-border_color-indexed,
-                              borders_left_color_theme      borders-left-border_color-theme,
-                              borders_left_color_tint       borders-left-border_color-tint,
-
-                              borders_right_style           borders-right-border_style,
-                              borders_right_color           borders-right-border_color,
-                              borders_right_color_rgb       borders-right-border_color-rgb,
-                              borders_right_color_indexed   borders-right-border_color-indexed,
-                              borders_right_color_theme     borders-right-border_color-theme,
-                              borders_right_color_tint      borders-right-border_color-tint,
-
-                              borders_top_style             borders-top-border_style,
-                              borders_top_color             borders-top-border_color,
-                              borders_top_color_rgb         borders-top-border_color-rgb,
-                              borders_top_color_indexed     borders-top-border_color-indexed,
-                              borders_top_color_theme       borders-top-border_color-theme,
-                              borders_top_color_tint        borders-top-border_color-tint.
-
-
-* Now we have a completly filled styles.
-* This can be used to get the guid
-* Return guid if requested.  Might be used if copy&amp;paste of styles is requested
-  ep_guid = me-&gt;excel-&gt;get_static_cellstyle_guid( ip_cstyle_complete  = complete_style
-                                                  ip_cstylex_complete = complete_stylex  ).
-  me-&gt;set_cell_style( ip_column = ip_column
-                      ip_row    = ip_row
-                      ip_style  = ep_guid ).
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CLEAR_PRINT_REPEAT_COLUMNS" VERSION="1" LANGU="E" ALIAS="X" EXPOSURE="2" STATE="1" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" REFCLSNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS" REFCMPNAME="CLEAR_PRINT_REPEAT_COLUMNS" BCMTDCAT="00" BCMTDSYN="0"/>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CLEAR_PRINT_REPEAT_ROWS" VERSION="1" LANGU="E" ALIAS="X" EXPOSURE="2" STATE="1" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" REFCLSNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS" REFCMPNAME="CLEAR_PRINT_REPEAT_ROWS" BCMTDCAT="00" BCMTDSYN="0"/>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CONSTRUCTOR" VERSION="1" LANGU="E" DESCRIPT="CONSTRUCTOR" EXPOSURE="2" STATE="1" EDITORDER="11 " DISPID="0 " MTDTYPE="2" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CONSTRUCTOR" SCONAME="IP_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Ref to parent document" CMPTYPE="1" MTDTYPE="2" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CONSTRUCTOR" SCONAME="IP_TITLE" VERSION="1" LANGU="E" DESCRIPT="Title" CMPTYPE="1" MTDTYPE="2" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_SHEET_TITLE" PAROPTIONL="X"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="CONSTRUCTOR" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="2" EDITORDER="1 "/>
-  <source>METHOD constructor.
-  DATA: lv_title TYPE zexcel_sheet_title.
-
-  me-&gt;excel = ip_excel.
-
-  CALL FUNCTION &apos;GUID_CREATE&apos;
-    IMPORTING
-      ev_guid_16 = me-&gt;guid.
-
-  IF ip_title IS NOT INITIAL.
-    lv_title = ip_title.
-  ELSE.
-*    lv_title = me-&gt;guid.             &quot; del issue #154 - Names of worksheets
-    lv_title = me-&gt;generate_title( ). &quot; ins issue #154 - Names of worksheets
-  ENDIF.
-
-  me-&gt;set_title( ip_title = lv_title ).
-
-  CREATE OBJECT sheet_setup.
-  CREATE OBJECT conditional_styles.
-  CREATE OBJECT data_validations.
-  CREATE OBJECT tables.
-  CREATE OBJECT ranges. &quot; issue #163
-  CREATE OBJECT drawings
-    EXPORTING
-      ip_type = zcl_excel_drawing=&gt;type_image.
-  CREATE OBJECT charts
-    EXPORTING
-      ip_type = zcl_excel_drawing=&gt;type_chart.
-  me-&gt;zif_excel_sheet_protection~initialize( ).
-  me-&gt;zif_excel_sheet_properties~initialize( ).
-  CREATE OBJECT hyperlinks.
-
-* initialize active cell coordinates
-  active_cell-cell_row = 1.
-  active_cell-cell_column = 1.
-
-* inizialize dimension range
-  lower_cell-cell_row     = 1.
-  lower_cell-cell_column  = 1.
-  upper_cell-cell_row     = 1.
-  upper_cell-cell_column  = 1.
-
-ENDMETHOD.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="DELETE_MERGE" VERSION="1" LANGU="E" DESCRIPT="Delete the used merges" EXPOSURE="2" STATE="1" EDITORDER="12 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <source>method DELETE_MERGE.
-
-  DELETE sheet_content_merge INDEX 1.
-  DELETE sheet_content_merge INDEX 1.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="FREEZE_PANES" VERSION="1" LANGU="E" DESCRIPT="Freeze panes for supplied number of rows and/or columns" EXPOSURE="2" STATE="1" EDITORDER="13 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="FREEZE_PANES" SCONAME="IP_NUM_COLUMNS" VERSION="1" LANGU="E" DESCRIPT="Number of  columns to freeze (starting from left-most)" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="FREEZE_PANES" SCONAME="IP_NUM_ROWS" VERSION="1" LANGU="E" DESCRIPT="Number of rows to freeze (starting from top-most)" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I" PAROPTIONL="X"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="FREEZE_PANES" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method FREEZE_PANES.
-  data: lv_xsplit type i,
-        lv_ysplit type i.
-
-  IF ip_num_columns IS NOT SUPPLIED AND ip_num_rows IS NOT SUPPLIED.
-    RAISE EXCEPTION TYPE zcx_excel
-          EXPORTING
-            error = &apos;Pleas provide number of rows and/or columns to freeze&apos;.
-  ENDIF.
-
-  IF ip_num_columns IS SUPPLIED AND ip_num_columns &lt;= 0.
-    RAISE EXCEPTION TYPE zcx_excel
-              EXPORTING
-                error = &apos;Number of columns to freeze should be positive&apos;.
-  ENDIF.
-
-  IF ip_num_rows IS SUPPLIED AND ip_num_rows &lt;= 0.
-    RAISE EXCEPTION TYPE zcx_excel
-              EXPORTING
-                error = &apos;Number of rows to freeze should be positive&apos;.
-  ENDIF.
-
-  freeze_pane_cell_column = ip_num_columns + 1.
-  freeze_pane_cell_row = ip_num_rows + 1.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GENERATE_TITLE" VERSION="1" LANGU="E" DESCRIPT="Generate title for worksheet (called if none is supplied )" EXPOSURE="0" STATE="1" EDITORDER="14 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GENERATE_TITLE" SCONAME="EP_TITLE" VERSION="1" LANGU="E" DESCRIPT="Title" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_SHEET_TITLE"/>
-  <source>method GENERATE_TITLE.
-  DATA: lo_worksheets_iterator  TYPE REF TO cl_object_collection_iterator,
-        lo_worksheet            TYPE REF TO zcl_excel_worksheet,
-        errormessage            TYPE string.
-
-  DATA: t_titles                TYPE HASHED TABLE OF zexcel_sheet_title WITH UNIQUE KEY table_line,
-        title                   TYPE zexcel_sheet_title,
-        sheetnumber             TYPE i.
-
-* Get list of currently used titles
-  lo_worksheets_iterator = me-&gt;excel-&gt;get_worksheets_iterator( ).
-  WHILE lo_worksheets_iterator-&gt;has_next( ) = abap_true.
-    lo_worksheet ?= lo_worksheets_iterator-&gt;get_next( ).
-    title = lo_worksheet-&gt;get_title( ).
-    INSERT title INTO TABLE t_titles.
-    ADD 1 TO sheetnumber.
-  ENDWHILE.
-
-* Now build sheetnumber.  Increase counter until we hit a number that is not used so far
-  ADD 1 TO sheetnumber.  &quot; Start counting with next number
-  DO.
-    title = sheetnumber.
-    SHIFT title LEFT DELETING LEADING space.
-    CONCATENATE &apos;Sheet&apos;(001) title INTO ep_title.
-    INSERT ep_title INTO TABLE t_titles.
-    IF sy-subrc = 0.  &quot; Title not used so far --&gt; take it
-      EXIT.
-    ENDIF.
-
-    ADD 1 TO sheetnumber.
-  ENDDO.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_ACTIVE_CELL" VERSION="1" LANGU="E" DESCRIPT="Get used range dimension" EXPOSURE="2" STATE="1" EDITORDER="15 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_ACTIVE_CELL" SCONAME="EP_ACTIVE_CELL" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_ACTIVE_CELL" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method GET_ACTIVE_CELL.
-
-  DATA: lv_active_column TYPE zexcel_cell_column_alpha,
-        lv_active_row    TYPE string.
-
-  lv_active_column = zcl_excel_common=&gt;convert_column2alpha( active_cell-cell_column ).
-  lv_active_row    = active_cell-cell_row.
-  SHIFT lv_active_row RIGHT DELETING TRAILING space.
-  SHIFT lv_active_row LEFT DELETING LEADING space.
-  CONCATENATE lv_active_column lv_active_row INTO ep_active_cell.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_CELL" VERSION="1" LANGU="E" DESCRIPT="Get cell value" EXPOSURE="2" STATE="1" EDITORDER="16 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_CELL" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_CELL" SCONAME="IP_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_CELL" SCONAME="EP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_CELL" SCONAME="EP_RC" VERSION="1" LANGU="E" DESCRIPT="Return Value of ABAP Statements" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="SYSUBRC"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_CELL" SCONAME="EP_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_STYLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_CELL" SCONAME="EP_GUID" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="6 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_CELL" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method GET_CELL.
-
-  DATA: lv_column         TYPE zexcel_cell_column,
-        ls_sheet_content  TYPE zexcel_s_cell_data.
-
-  FIELD-SYMBOLS: &lt;fs_sheet_content&gt; TYPE zexcel_s_cell_data.
-
-  lv_column = zcl_excel_common=&gt;convert_column2int( ip_column ).
-
-  READ TABLE sheet_content INTO ls_sheet_content WITH TABLE KEY cell_row     = ip_row
-                                                                cell_column  = lv_column.
-
-  ep_rc = sy-subrc.
-  ep_value = ls_sheet_content-cell_value.
-  ep_guid  = ls_sheet_content-cell_style.     &quot; issue 139 - added this to be used for columnwidth calculation
-
-  &quot; Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker
-  DATA: style_iterator TYPE REF TO cl_object_collection_iterator,
-        style          TYPE REF TO zcl_excel_style.
-  IF ep_style IS REQUESTED.
-    style_iterator = me-&gt;excel-&gt;get_styles_iterator( ).
-    WHILE style_iterator-&gt;has_next( ) = &apos;X&apos;.
-      style ?= style_iterator-&gt;get_next( ).
-      IF style-&gt;get_guid( ) = ls_sheet_content-cell_style.
-        ep_style = style.
-        EXIT.
-      ENDIF.
-    ENDWHILE.
-  ENDIF.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_COLUMN_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Get column dimension at a specific column" EXPOSURE="2" STATE="1" EDITORDER="17 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_COLUMN_DIMENSION" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_COLUMN_DIMENSION" SCONAME="R_COLUMN_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Worksheet ColumnDimension" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET_COLUMNDIME"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_COLUMN_DIMENSION" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method GET_COLUMN_DIMENSION.
-  FIELD-SYMBOLS: &lt;fs_column_dimension&gt; LIKE LINE OF column_dimensions.
-  DATA: lv_column_alpha TYPE zexcel_cell_column_alpha.                  &quot; issue #155 - less restrictive typing for ip_column
-
-  lv_column_alpha = zcl_excel_common=&gt;convert_column2alpha( ip_column ).&quot; issue #155 - less restrictive typing for ip_column
-  READ TABLE me-&gt;column_dimensions ASSIGNING &lt;fs_column_dimension&gt;
-    WITH KEY column = lv_column_alpha.                                  &quot; issue #155 - less restrictive typing for ip_column
-
-  IF NOT &lt;fs_column_dimension&gt; IS ASSIGNED.
-    CREATE OBJECT r_column_dimension
-      EXPORTING
-        ip_index     = lv_column_alpha                                     &quot; issue #155 - less restrictive typing for ip_column
-        ip_excel     = me-&gt;excel                                           &quot; issue #157 - Allow style for columns
-        ip_worksheet = me.                                                 &quot; issue #157 - Allow style for columns
-    APPEND INITIAL LINE TO me-&gt;column_dimensions ASSIGNING &lt;fs_column_dimension&gt;.
-    &lt;fs_column_dimension&gt;-column = lv_column_alpha.                     &quot; issue #155 - less restrictive typing for ip_column
-    &lt;fs_column_dimension&gt;-column_dimension = r_column_dimension.
-  ELSE.
-    r_column_dimension = &lt;fs_column_dimension&gt;-column_dimension.
-  ENDIF.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_COLUMN_DIMENSIONS" VERSION="1" LANGU="E" DESCRIPT="Get column dimensions" EXPOSURE="2" STATE="1" EDITORDER="18 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_COLUMN_DIMENSIONS" SCONAME="R_COLUMN_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Collection of column dimensions" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_T_WORKSHEET_COLUMNDIME"/>
-  <source>method GET_COLUMN_DIMENSIONS.
-  r_column_dimension[] = me-&gt;column_dimensions[].
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_COND_STYLES_ITERATOR" VERSION="1" LANGU="E" DESCRIPT="Get conditional styles iterator" EXPOSURE="2" STATE="1" EDITORDER="19 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_COND_STYLES_ITERATOR" SCONAME="EO_ITERATOR" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION_ITERATOR"/>
-  <source>method GET_COND_STYLES_ITERATOR.
-
-  eo_iterator = me-&gt;conditional_styles-&gt;get_iterator( ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DATA_VALIDATIONS_ITERATOR" VERSION="1" LANGU="E" DESCRIPT="Get conditional styles iterator" EXPOSURE="2" STATE="1" EDITORDER="20 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DATA_VALIDATIONS_ITERATOR" SCONAME="EO_ITERATOR" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION_ITERATOR"/>
-  <source>method GET_DATA_VALIDATIONS_ITERATOR.
-
-  eo_iterator = me-&gt;data_validations-&gt;get_iterator( ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DATA_VALIDATIONS_SIZE" VERSION="1" LANGU="E" DESCRIPT="Get the number of data validation objects" EXPOSURE="2" STATE="1" EDITORDER="21 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DATA_VALIDATIONS_SIZE" SCONAME="EP_SIZE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="I"/>
-  <source>method GET_DATA_VALIDATIONS_SIZE.
-  ep_size = me-&gt;data_validations-&gt;size( ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DEFAULT_COLUMN_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Get column dimension at a specific column" EXPOSURE="2" STATE="1" EDITORDER="22 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DEFAULT_COLUMN_DIMENSION" SCONAME="R_COLUMN_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Worksheet ColumnDimension" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET_COLUMNDIME"/>
-  <source>method GET_DEFAULT_COLUMN_DIMENSION.
-  IF me-&gt;default_column_dimension IS NOT BOUND.
-    CREATE OBJECT me-&gt;default_column_dimension
-      EXPORTING
-        ip_index      = &apos;A&apos;         &quot; ????
-        ip_worksheet  = me
-        ip_excel      = me-&gt;excel.
-  ENDIF.
-
-  r_column_dimension = me-&gt;default_column_dimension.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DEFAULT_EXCEL_DATE_FORMAT" VERSION="1" LANGU="E" DESCRIPT="Gets default date format" EXPOSURE="2" STATE="1" EDITORDER="23 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DEFAULT_EXCEL_DATE_FORMAT" SCONAME="EP_DEFAULT_EXCEL_DATE_FORMAT" VERSION="1" LANGU="E" DESCRIPT="Default date format" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_NUMBER_FORMAT"/>
-  <source>method GET_DEFAULT_EXCEL_DATE_FORMAT.
-  CONSTANTS: c_lang_e TYPE lang VALUE &apos;E&apos;.
-
-  IF default_excel_date_format IS NOT INITIAL.
-    ep_default_excel_date_format = default_excel_date_format.
-    RETURN.
-  ENDIF.
-
-  &quot;try to get defaults
-  TRY.
-      cl_abap_datfm=&gt;get_date_format_des( EXPORTING im_langu = c_lang_e
-                                          IMPORTING ex_dateformat = default_excel_date_format ).
-    CATCH cx_abap_datfm_format_unknown.
-
-  ENDTRY.
-
-  &quot; and fallback to fixed format
-  IF default_excel_date_format IS INITIAL.
-    default_excel_date_format = zcl_excel_style_number_format=&gt;c_format_date_ddmmyyyydot.
-  ENDIF.
-
-  ep_default_excel_date_format = default_excel_date_format.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DEFAULT_EXCEL_TIME_FORMAT" VERSION="1" LANGU="E" DESCRIPT="Gets default time format" EXPOSURE="2" STATE="1" EDITORDER="24 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DEFAULT_EXCEL_TIME_FORMAT" SCONAME="EP_DEFAULT_EXCEL_TIME_FORMAT" VERSION="1" LANGU="E" DESCRIPT="Default date format" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_NUMBER_FORMAT"/>
-  <source>method GET_DEFAULT_EXCEL_TIME_FORMAT.
-  DATA: l_timefm TYPE xutimefm.
-
-  IF default_excel_time_format IS NOT INITIAL.
-    ep_default_excel_time_format = default_excel_time_format.
-    RETURN.
-  ENDIF.
-
-* Let&apos;s get default
-  l_timefm = cl_abap_timefm=&gt;get_environment_timefm( ).
-  CASE l_timefm.
-    WHEN 0.
-*0  24 Hour Format (Example: 12:05:10)
-      default_excel_time_format = zcl_excel_style_number_format=&gt;c_format_date_time6.
-    WHEN 1.
-*1  12 Hour Format (Example: 12:05:10 PM)
-      default_excel_time_format = zcl_excel_style_number_format=&gt;c_format_date_time2.
-    WHEN 2.
-*2  12 Hour Format (Example: 12:05:10 pm) for now all the same. no chnage upper lower
-      default_excel_time_format = zcl_excel_style_number_format=&gt;c_format_date_time2.
-    WHEN 3.
-*3  Hours from 0 to 11 (Example: 00:05:10 PM)  for now all the same. no chnage upper lower
-      default_excel_time_format = zcl_excel_style_number_format=&gt;c_format_date_time2.
-    WHEN 4.
-*4  Hours from 0 to 11 (Example: 00:05:10 pm)  for now all the same. no chnage upper lower
-      default_excel_time_format = zcl_excel_style_number_format=&gt;c_format_date_time2.
-    WHEN OTHERS.
-      &quot; and fallback to fixed format
-      default_excel_time_format = zcl_excel_style_number_format=&gt;c_format_date_time6.
-  ENDCASE.
-
-  ep_default_excel_time_format = default_excel_time_format.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DEFAULT_ROW_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Get column dimension at a specific column" EXPOSURE="2" STATE="1" EDITORDER="25 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DEFAULT_ROW_DIMENSION" SCONAME="R_ROW_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Worksheet ColumnDimension" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET_ROWDIMENSI"/>
-  <source>method GET_DEFAULT_ROW_DIMENSION.
-  IF me-&gt;default_row_dimension IS NOT BOUND.
-    CREATE OBJECT me-&gt;default_row_dimension.
-  ENDIF.
-
-  r_row_dimension = me-&gt;default_row_dimension.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DIMENSION_RANGE" VERSION="1" LANGU="E" DESCRIPT="Get used range dimension" EXPOSURE="2" STATE="1" EDITORDER="26 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DIMENSION_RANGE" SCONAME="EP_DIMENSION_RANGE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DIMENSION_RANGE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method GET_DIMENSION_RANGE.
-
-  me-&gt;update_dimension_range( ).
-  IF upper_cell EQ lower_cell. &quot;only one cell
-    &quot; Worksheet not filled
-*    IF upper_cell-cell_coords = &apos;0&apos;.
-    IF upper_cell-cell_coords IS INITIAL.
-      ep_dimension_range = &apos;A1&apos;.
-    ELSE.
-      ep_dimension_range = upper_cell-cell_coords.
-    ENDIF.
-  ELSE.
-    CONCATENATE upper_cell-cell_coords &apos;:&apos; lower_cell-cell_coords INTO ep_dimension_range.
-  ENDIF.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DRAWINGS" VERSION="1" LANGU="E" DESCRIPT="Gets drawing attached to the sheet" EXPOSURE="2" STATE="1" EDITORDER="27 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DRAWINGS" SCONAME="IP_TYPE" VERSION="1" LANGU="E" DESCRIPT="Excel Drawing type" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_DRAWING_TYPE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DRAWINGS" SCONAME="R_DRAWINGS" VERSION="1" LANGU="E" DESCRIPT="Drawings collection" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_DRAWINGS"/>
-  <source>method GET_DRAWINGS.
-
-  DATA: lo_drawing                    TYPE REF TO zcl_excel_drawing,
-        lo_iterator                   TYPE REF TO cl_object_collection_iterator.
-
-  CASE ip_type.
-    WHEN zcl_excel_drawing=&gt;type_image.
-      r_drawings = drawings.
-    WHEN zcl_excel_drawing=&gt;type_chart.
-      r_drawings = charts.
-    WHEN space.
-      CREATE OBJECT r_drawings
-        EXPORTING
-          ip_type = &apos;&apos;.
-
-      lo_iterator = drawings-&gt;get_iterator( ).
-      WHILE lo_iterator-&gt;has_next( ) = abap_true.
-        lo_drawing ?= lo_iterator-&gt;get_next( ).
-        r_drawings-&gt;include( lo_drawing ).
-      ENDWHILE.
-      lo_iterator = charts-&gt;get_iterator( ).
-      WHILE lo_iterator-&gt;has_next( ) = abap_true.
-        lo_drawing ?= lo_iterator-&gt;get_next( ).
-        r_drawings-&gt;include( lo_drawing ).
-      ENDWHILE.
-    WHEN OTHERS.
-  ENDCASE.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DRAWINGS_ITERATOR" VERSION="1" LANGU="E" DESCRIPT="Get iterator for drawings collection" EXPOSURE="2" STATE="1" EDITORDER="28 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DRAWINGS_ITERATOR" SCONAME="IP_TYPE" VERSION="1" LANGU="E" DESCRIPT="Excel Drawing type" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_DRAWING_TYPE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_DRAWINGS_ITERATOR" SCONAME="EO_ITERATOR" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION_ITERATOR"/>
-  <source>method GET_DRAWINGS_ITERATOR.
-  CASE ip_type.
-    WHEN zcl_excel_drawing=&gt;type_image.
-      eo_iterator = drawings-&gt;get_iterator( ).
-    WHEN zcl_excel_drawing=&gt;type_chart.
-      eo_iterator = charts-&gt;get_iterator( ).
-  ENDCASE.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_FREEZE_CELL" VERSION="1" LANGU="E" DESCRIPT="Gets the coordinates of cell determining freeze panes" EXPOSURE="2" STATE="1" EDITORDER="29 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_FREEZE_CELL" SCONAME="EP_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_FREEZE_CELL" SCONAME="EP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN"/>
-  <source>method GET_FREEZE_CELL.
-  ep_row = me-&gt;freeze_pane_cell_row.
-  ep_column = me-&gt;freeze_pane_cell_column.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_GUID" VERSION="1" LANGU="E" DESCRIPT="Get sheet guid" EXPOSURE="2" STATE="1" EDITORDER="30 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_GUID" SCONAME="EP_GUID" VERSION="1" LANGU="E" DESCRIPT="GUID in &apos;RAW&apos; format" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="OLTPGUID16"/>
-  <source>method GET_GUID.
-
-  ep_guid = me-&gt;guid.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HIGHEST_COLUMN" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="31 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HIGHEST_COLUMN" SCONAME="R_HIGHEST_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HIGHEST_COLUMN" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method GET_HIGHEST_COLUMN.
-  me-&gt;update_dimension_range( ).
-  r_highest_column = me-&gt;lower_cell-cell_column.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HIGHEST_ROW" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="32 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HIGHEST_ROW" SCONAME="R_HIGHEST_ROW" VERSION="1" LANGU="E" DESCRIPT="Natural number" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="INT4"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HIGHEST_ROW" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method GET_HIGHEST_ROW.
-  me-&gt;update_dimension_range( ).
-  r_highest_row = me-&gt;lower_cell-cell_row.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HYPERLINKS_ITERATOR" VERSION="1" LANGU="E" DESCRIPT="Get iterator for links collection" EXPOSURE="2" STATE="1" EDITORDER="33 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HYPERLINKS_ITERATOR" SCONAME="EO_ITERATOR" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION_ITERATOR"/>
-  <source>method GET_HYPERLINKS_ITERATOR.
-  eo_iterator = hyperlinks-&gt;get_iterator( ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HYPERLINKS_SIZE" VERSION="1" LANGU="E" DESCRIPT="Gets the size of links collection" EXPOSURE="2" STATE="1" EDITORDER="34 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HYPERLINKS_SIZE" SCONAME="EP_SIZE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="I"/>
-  <source>method GET_HYPERLINKS_SIZE.
-  ep_size = hyperlinks-&gt;size( ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_MERGE" VERSION="1" LANGU="E" DESCRIPT="Get the merge range" EXPOSURE="2" STATE="1" EDITORDER="35 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_MERGE" SCONAME="MERGE_RANGE" VERSION="1" LANGU="E" DESCRIPT="Table of Strings" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING_TABLE"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_MERGE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method GET_MERGE.
-
-  DATA: lv_column_start   TYPE string,
-        lv_column_end     TYPE string,
-        lv_row            TYPE string,
-        lv_index          TYPE sy-tabix,
-        ls_sheet_content  TYPE zexcel_s_cell_data,
-        range_from        TYPE string,
-        range_to          TYPE string,
-        lv_merge_range    TYPE string,
-        lv_count          TYPE string.
-
-  FIELD-SYMBOLS: &lt;fs_sheet_content&gt; TYPE zexcel_s_cell_data.
-
-  DESCRIBE TABLE sheet_content_merge LINES lv_count.
-
-  WHILE lv_count GT lv_index.
-*  LOOP AT sheet_content_merge ASSIGNING &lt;fs_sheet_content&gt;.
-    lv_index = lv_index + 1.
-    READ TABLE sheet_content_merge ASSIGNING &lt;fs_sheet_content&gt; INDEX lv_index.
-    lv_column_start = zcl_excel_common=&gt;convert_column2alpha( &lt;fs_sheet_content&gt;-cell_column ).
-    lv_row = &lt;fs_sheet_content&gt;-cell_row.
-    SHIFT lv_column_start RIGHT DELETING TRAILING space.
-    SHIFT lv_column_start LEFT DELETING LEADING space.
-    SHIFT lv_row RIGHT DELETING TRAILING space.
-    SHIFT lv_row LEFT DELETING LEADING space.
-    CONCATENATE lv_column_start lv_row
-    INTO range_from.
-
-    lv_index = lv_index + 1.
-    READ TABLE sheet_content_merge ASSIGNING &lt;fs_sheet_content&gt; INDEX lv_index.
-    lv_column_end = zcl_excel_common=&gt;convert_column2alpha( &lt;fs_sheet_content&gt;-cell_column ).
-    lv_row = &lt;fs_sheet_content&gt;-cell_row.
-    SHIFT lv_column_end RIGHT DELETING TRAILING space.
-    SHIFT lv_column_end LEFT DELETING LEADING space.
-    SHIFT lv_row RIGHT DELETING TRAILING space.
-    SHIFT lv_row LEFT DELETING LEADING space.
-    CONCATENATE lv_column_end lv_row
-    INTO range_to.
-
-    CONCATENATE range_from range_to INTO lv_merge_range
-    SEPARATED BY &apos;:&apos;.
-    APPEND lv_merge_range TO merge_range.
-  ENDWHILE.
-*  ENDLOOP.
-
-*  READ TABLE sheet_content_merge ASSIGNING &lt;fs_sheet_content&gt; INDEX 1.
-*  IF sy-subrc EQ 0 AND &lt;fs_sheet_content&gt; IS ASSIGNED.
-*    lv_column_start = zcl_excel_common=&gt;convert_column2alpha( &lt;fs_sheet_content&gt;-cell_column ).
-*    lv_row = &lt;fs_sheet_content&gt;-cell_row.
-*    SHIFT lv_column_start RIGHT DELETING TRAILING space.
-*    SHIFT lv_column_start LEFT DELETING LEADING space.
-*    SHIFT lv_row RIGHT DELETING TRAILING space.
-*    SHIFT lv_row LEFT DELETING LEADING space.
-*    CONCATENATE lv_column_start lv_row
-*    INTO range_from.
-*  ENDIF.
-*  READ TABLE sheet_content_merge ASSIGNING &lt;fs_sheet_content&gt; INDEX 2.
-*  IF sy-subrc EQ 0 AND &lt;fs_sheet_content&gt; IS ASSIGNED.
-*    lv_column_end = zcl_excel_common=&gt;convert_column2alpha( &lt;fs_sheet_content&gt;-cell_column ).
-*    SHIFT lv_column_end RIGHT DELETING TRAILING space.
-*    SHIFT lv_column_end LEFT DELETING LEADING space.
-*    CONCATENATE lv_column_end lv_row
-*    INTO range_to.
-*  ENDIF.
-
-*  IF range_from NE space AND range_to NE space.
-*    CONCATENATE range_from range_to INTO ep_merge_range
-*    SEPARATED BY &apos;:&apos;.
-*  ENDIF.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_PRINT_REPEAT_COLUMNS" VERSION="1" LANGU="E" ALIAS="X" EXPOSURE="2" STATE="1" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" REFCLSNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS" REFCMPNAME="GET_PRINT_REPEAT_COLUMNS" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter VERSION="0" CMPTYPE="0" MTDTYPE="0" EDITORDER="0 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
-  <parameter VERSION="0" CMPTYPE="0" MTDTYPE="0" EDITORDER="0 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_PRINT_REPEAT_ROWS" VERSION="1" LANGU="E" ALIAS="X" EXPOSURE="2" STATE="1" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" REFCLSNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS" REFCMPNAME="GET_PRINT_REPEAT_ROWS" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter VERSION="0" CMPTYPE="0" MTDTYPE="0" EDITORDER="0 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
-  <parameter VERSION="0" CMPTYPE="0" MTDTYPE="0" EDITORDER="0 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_RANGES_ITERATOR" VERSION="1" LANGU="E" DESCRIPT="Get ranges iterator" EXPOSURE="2" STATE="1" EDITORDER="36 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_RANGES_ITERATOR" SCONAME="EO_ITERATOR" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION_ITERATOR"/>
-  <source>method GET_RANGES_ITERATOR.
-
-  eo_iterator = me-&gt;ranges-&gt;get_iterator( ).
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_ROW_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Get column dimension at a specific column" EXPOSURE="2" STATE="1" EDITORDER="37 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_ROW_DIMENSION" SCONAME="IP_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INT4"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_ROW_DIMENSION" SCONAME="R_ROW_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Worksheet ColumnDimension" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET_ROWDIMENSI"/>
-  <source>method GET_ROW_DIMENSION.
-  FIELD-SYMBOLS: &lt;fs_row_dimension&gt; LIKE LINE OF row_dimensions.
-
-  READ TABLE me-&gt;row_dimensions ASSIGNING &lt;fs_row_dimension&gt;
-    WITH KEY row = ip_row.
-
-  IF NOT &lt;fs_row_dimension&gt; IS ASSIGNED.
-    CREATE OBJECT r_row_dimension
-      EXPORTING
-        ip_index = ip_row.
-    APPEND INITIAL LINE TO me-&gt;row_dimensions ASSIGNING &lt;fs_row_dimension&gt;.
-    &lt;fs_row_dimension&gt;-row = ip_row.
-    &lt;fs_row_dimension&gt;-row_dimension = r_row_dimension.
-  ELSE.
-    r_row_dimension = &lt;fs_row_dimension&gt;-row_dimension.
-  ENDIF.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_ROW_DIMENSIONS" VERSION="1" LANGU="E" DESCRIPT="Get column dimensions" EXPOSURE="2" STATE="1" EDITORDER="38 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_ROW_DIMENSIONS" SCONAME="R_ROW_DIMENSION" VERSION="1" LANGU="E" DESCRIPT="Collection of column dimensions" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_T_WORKSHEET_ROWDIMENSIO"/>
-  <source>method GET_ROW_DIMENSIONS.
-  r_row_dimension[] = me-&gt;row_dimensions[].
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_TABCOLOR" VERSION="1" LANGU="E" DESCRIPT="get tabcolor" EXPOSURE="2" STATE="1" EDITORDER="39 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_TABCOLOR" SCONAME="EV_TABCOLOR" VERSION="1" LANGU="E" DESCRIPT="Color ARGB" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_S_TABCOLOR"/>
-  <source>method GET_TABCOLOR.
-  ev_tabcolor = me-&gt;tabcolor.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_TABLES_ITERATOR" VERSION="1" LANGU="E" DESCRIPT="Get iterator for tables collection" EXPOSURE="2" STATE="1" EDITORDER="40 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_TABLES_ITERATOR" SCONAME="EO_ITERATOR" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION_ITERATOR"/>
-  <source>method GET_TABLES_ITERATOR.
-  eo_iterator = tables-&gt;if_object_collection~get_iterator( ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_TABLES_SIZE" VERSION="1" LANGU="E" DESCRIPT="Gets the size of tables collection" EXPOSURE="2" STATE="1" EDITORDER="41 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_TABLES_SIZE" SCONAME="EP_SIZE" VERSION="1" LANGU="E" DESCRIPT="Size" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="I"/>
-  <source>method GET_TABLES_SIZE.
-  ep_size = tables-&gt;if_object_collection~size( ).
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_TITLE" VERSION="1" LANGU="E" DESCRIPT="Get WorkSheet Title" EXPOSURE="2" STATE="1" EDITORDER="42 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_TITLE" SCONAME="IP_ESCAPED" VERSION="1" LANGU="E" DESCRIPT="Return escaped?" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PARVALUE="&apos;&apos;" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_TITLE" SCONAME="EP_TITLE" VERSION="1" LANGU="E" DESCRIPT="Title" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_SHEET_TITLE"/>
-  <source>method GET_TITLE.
-  DATA lv_value TYPE string.
-  IF ip_escaped EQ abap_true.
-    lv_value = me-&gt;title.
-    ep_title = zcl_excel_common=&gt;escape_string( lv_value ).
-  ELSE.
-    ep_title = me-&gt;title.
-  ENDIF.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_VALUE_TYPE" VERSION="1" LANGU="E" DESCRIPT="Get abap type kind and apply conversion routine" EXPOSURE="0" STATE="1" EDITORDER="43 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_VALUE_TYPE" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_VALUE_TYPE" SCONAME="EP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_VALUE_TYPE" SCONAME="EP_VALUE_TYPE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_TYPEKIND"/>
-  <source>method GET_VALUE_TYPE.
-  DATA:  lo_addit                  TYPE REF TO cl_abap_elemdescr,
-         ls_dfies                  TYPE dfies,
-         l_function                TYPE funcname,
-         l_value(50)               TYPE c.
-
-  ep_value = ip_value.
-  ep_value_type = cl_abap_typedescr=&gt;typekind_string. &quot; Thats our default if something goes wrong.
-
-  TRY.
-      lo_addit            ?= cl_abap_typedescr=&gt;describe_by_data( ip_value ).
-    CATCH cx_sy_move_cast_error.
-      CLEAR lo_addit.
-  ENDTRY.
-  IF lo_addit IS BOUND.
-    lo_addit-&gt;get_ddic_field( RECEIVING  p_flddescr   = ls_dfies
-                              EXCEPTIONS not_found    = 1
-                                         no_ddic_type = 2
-                                         OTHERS       = 3 ) .
-    IF sy-subrc = 0.
-      ep_value_type = ls_dfies-inttype.
-
-      IF ls_dfies-convexit IS NOT INITIAL.
-* We need to convert with output conversion function
-        CONCATENATE &apos;CONVERSION_EXIT_&apos; ls_dfies-convexit &apos;_OUTPUT&apos; INTO l_function.
-        SELECT SINGLE funcname INTO l_function
-              FROM tfdir
-              WHERE funcname = l_function.
-        IF sy-subrc = 0.
-          CALL FUNCTION l_function
-            EXPORTING
-              input      = ip_value
-            IMPORTING
-*             LONG_TEXT  =
-              output     = l_value
-*             SHORT_TEXT =
-            EXCEPTIONS
-              OTHERS     = 1.
-          IF sy-subrc &lt;&gt; 0.
-* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
-*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
-          ELSE.
-            ep_value = l_value.
-          ENDIF.
-        ENDIF.
-      ENDIF.
-    ELSE.
-      ep_value_type = lo_addit-&gt;get_data_type_kind( ip_value ).
-    ENDIF.
-  ENDIF.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="PRINT_TITLE_SET_RANGE" VERSION="1" LANGU="E" DESCRIPT="Update range for print title" EXPOSURE="0" STATE="1" EDITORDER="57 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <source>METHOD print_title_set_range.
-*--------------------------------------------------------------------*
-* issue#235 - repeat rows/columns
-*           - Stefan Schmöcker,                             2012-12-02
-*--------------------------------------------------------------------*
-
-
-  DATA:     lo_range_iterator               TYPE REF TO cl_object_collection_iterator,
-            lo_range                        TYPE REF TO zcl_excel_range,
-            lv_repeat_range_sheetname       TYPE string,
-            lv_repeat_range_col             TYPE string,
-            lv_row_char_from                TYPE char10,
-            lv_row_char_to                  TYPE char10,
-            lv_repeat_range_row             TYPE string,
-            lv_repeat_range                 TYPE string.
-
-
-*--------------------------------------------------------------------*
-* Get range that represents printarea
-* if non-existant, create it
-*--------------------------------------------------------------------*
-  lo_range_iterator = me-&gt;get_ranges_iterator( ).
-  WHILE lo_range_iterator-&gt;has_next( ) = abap_true.
-
-    lo_range ?= lo_range_iterator-&gt;get_next( ).
-    IF lo_range-&gt;name = zif_excel_sheet_printsettings=&gt;gcv_print_title_name.
-      EXIT.  &quot; Found it
-    ENDIF.
-    CLEAR lo_range.
-
-  ENDWHILE.
-
-
-  IF me-&gt;print_title_col_from IS INITIAL AND
-     me-&gt;print_title_row_from IS INITIAL.
-*--------------------------------------------------------------------*
-* No print titles are present,
-*--------------------------------------------------------------------*
-    IF lo_range IS BOUND.
-      me-&gt;ranges-&gt;remove( lo_range ).
-    ENDIF.
-  ELSE.
-*--------------------------------------------------------------------*
-* Print titles are present,
-*--------------------------------------------------------------------*
-    IF lo_range IS NOT BOUND.
-      lo_range =  me-&gt;add_new_range( ).
-      lo_range-&gt;name = zif_excel_sheet_printsettings=&gt;gcv_print_title_name.
-    ENDIF.
-
-    lv_repeat_range_sheetname = me-&gt;get_title( ).
-    lv_repeat_range_sheetname = zcl_excel_common=&gt;escape_string( lv_repeat_range_sheetname ).
-
-*--------------------------------------------------------------------*
-* Repeat-columns
-*--------------------------------------------------------------------*
-    IF me-&gt;print_title_col_from IS NOT INITIAL.
-      CONCATENATE lv_repeat_range_sheetname
-                  &apos;!$&apos; me-&gt;print_title_col_from
-                  &apos;:$&apos; me-&gt;print_title_col_to
-          INTO lv_repeat_range_col.
-    ENDIF.
-
-*--------------------------------------------------------------------*
-* Repeat-rows
-*--------------------------------------------------------------------*
-    IF me-&gt;print_title_row_from IS NOT INITIAL.
-      lv_row_char_from = me-&gt;print_title_row_from.
-      lv_row_char_to   = me-&gt;print_title_row_to.
-      CONCATENATE &apos;!$&apos; lv_row_char_from
-                  &apos;:$&apos; lv_row_char_to
-          INTO lv_repeat_range_row.
-      CONDENSE lv_repeat_range_row NO-GAPS.
-      CONCATENATE lv_repeat_range_sheetname
-                  lv_repeat_range_row
-          INTO lv_repeat_range_row.
-    ENDIF.
-
-*--------------------------------------------------------------------*
-* Concatenate repeat-rows and columns
-*--------------------------------------------------------------------*
-    IF lv_repeat_range_col IS INITIAL.
-      lv_repeat_range = lv_repeat_range_row.
-    ELSEIF lv_repeat_range_row IS INITIAL.
-      lv_repeat_range = lv_repeat_range_col.
-    ELSE.
-      CONCATENATE lv_repeat_range_col lv_repeat_range_row
-          INTO lv_repeat_range SEPARATED BY &apos;,&apos;.
-    ENDIF.
-
-
-    lo_range-&gt;set_range_value( lv_repeat_range ).
-  ENDIF.
-
-
-
-ENDMETHOD.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" VERSION="1" LANGU="E" DESCRIPT="Set cell value" EXPOSURE="2" STATE="1" EDITORDER="44 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_FORMULA" VERSION="1" LANGU="E" DESCRIPT="Cell Formula" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_FORMULA" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_STYLE" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_HYPERLINK" VERSION="1" LANGU="E" DESCRIPT="Hyperlink" CMPTYPE="1" MTDTYPE="0" EDITORDER="6 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_HYPERLINK" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_DATA_TYPE" VERSION="1" LANGU="E" DESCRIPT="Cell data type" CMPTYPE="1" MTDTYPE="0" EDITORDER="7 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_DATA_TYPE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_ABAP_TYPE" VERSION="1" LANGU="E" DESCRIPT="ABAP data type" CMPTYPE="1" MTDTYPE="0" EDITORDER="8 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_TYPEKIND" PAROPTIONL="X"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method SET_CELL.
-
-  DATA: lv_column                 TYPE zexcel_cell_column,
-        ls_sheet_content          TYPE zexcel_s_cell_data,
-        lv_row_alpha              TYPE string,
-        lv_col_alpha              TYPE ZEXCEL_CELL_COLUMN_ALPHA,
-        lv_value                  TYPE zexcel_cell_value,
-        lv_data_type              TYPE zexcel_cell_data_type,
-        lv_value_type             TYPE abap_typekind,
-        lo_style                  TYPE REF TO zcl_excel_style,
-        lv_style_guid             TYPE zexcel_cell_style,
-        lo_addit                  TYPE REF TO cl_abap_elemdescr,
-        lo_value                  TYPE REF TO data,
-        lo_value_new              TYPE REF TO data.
-
-  FIELD-SYMBOLS: &lt;fs_sheet_content&gt; TYPE zexcel_s_cell_data,
-                 &lt;fs_numeric&gt;       TYPE numeric,
-                 &lt;fs_date&gt;          TYPE d,
-                 &lt;fs_time&gt;          TYPE t,
-                 &lt;fs_value&gt;         TYPE simple.
-
-  IF ip_value  IS NOT SUPPLIED AND ip_formula IS NOT SUPPLIED.
-    RAISE EXCEPTION TYPE zcx_excel
-      EXPORTING
-        error = &apos;Please provide the value or formula&apos;.
-  ENDIF.
-
-* Begin of change issue #152 - don&apos;t touch exisiting style if only value is passed
-*  lv_style_guid = ip_style.
-  lv_column = zcl_excel_common=&gt;convert_column2int( ip_column ).
-  READ TABLE sheet_content ASSIGNING &lt;fs_sheet_content&gt; WITH KEY cell_row    = ip_row
-                                                                 cell_column = lv_column.
-  IF sy-subrc = 0.
-    IF ip_style IS INITIAL.
-      &quot; If no style is provided as method-parameter and cell is found use cell&apos;s current style
-      lv_style_guid = &lt;fs_sheet_content&gt;-cell_style.
-    ELSE.
-      &quot; Style provided as method-parameter --&gt; use this
-      lv_style_guid = ip_style.
-    ENDIF.
-  ELSE.
-    &quot; No cell found --&gt; use supplied style even if empty
-    lv_style_guid = ip_style.
-  ENDIF.
-* End of change issue #152 - don&apos;t touch exisiting style if only value is passed
-
-  IF ip_value IS SUPPLIED.
-    &quot;if data type is passed just write the value. Otherwise map abap type to excel and perform conversion
-    &quot;IP_DATA_TYPE is passed by excel reader so source types are preserved
-*First we get reference into local var.
-    CREATE DATA lo_value LIKE ip_value.
-    ASSIGN lo_value-&gt;* TO &lt;fs_value&gt;.
-    &lt;fs_value&gt; = ip_value.
-    IF ip_data_type IS SUPPLIED.
-      IF ip_abap_type IS NOT SUPPLIED.
-        get_value_type( EXPORTING ip_value      = ip_value
-                        IMPORTING ep_value      = &lt;fs_value&gt; ) .
-      ENDIF.
-      lv_value = &lt;fs_value&gt;.
-      lv_data_type = ip_data_type.
-    ELSE.
-      IF ip_abap_type IS SUPPLIED.
-        lv_value_type = ip_abap_type.
-      ELSE.
-        get_value_type( EXPORTING ip_value      = ip_value
-                        IMPORTING ep_value      = &lt;fs_value&gt;
-                                  ep_value_type = lv_value_type ).
-      ENDIF.
-      CASE lv_value_type.
-        WHEN cl_abap_typedescr=&gt;typekind_int OR cl_abap_typedescr=&gt;typekind_int1 OR cl_abap_typedescr=&gt;typekind_int2.
-          lo_addit = cl_abap_elemdescr=&gt;get_i( ).
-          CREATE DATA lo_value_new TYPE HANDLE lo_addit.
-          ASSIGN lo_value_new-&gt;* TO &lt;fs_numeric&gt;.
-          IF sy-subrc = 0.
-            &lt;fs_numeric&gt; = &lt;fs_value&gt;.
-            lv_value = zcl_excel_common=&gt;number_to_excel_string( ip_value = &lt;fs_numeric&gt; ).
-          ENDIF.
-
-        WHEN cl_abap_typedescr=&gt;typekind_float OR cl_abap_typedescr=&gt;typekind_packed.
-          lo_addit = cl_abap_elemdescr=&gt;get_f( ).
-          CREATE DATA lo_value_new TYPE HANDLE lo_addit.
-          ASSIGN lo_value_new-&gt;* TO &lt;fs_numeric&gt;.
-          IF sy-subrc = 0.
-            &lt;fs_numeric&gt; = &lt;fs_value&gt;.
-            lv_value = zcl_excel_common=&gt;number_to_excel_string( ip_value = &lt;fs_numeric&gt; ).
-          ENDIF.
-
-        WHEN cl_abap_typedescr=&gt;typekind_char OR cl_abap_typedescr=&gt;typekind_string OR cl_abap_typedescr=&gt;typekind_num or
-             cl_abap_typedescr=&gt;typekind_hex.
-          lv_value = &lt;fs_value&gt;.
-          lv_data_type = &apos;s&apos;.
-
-        WHEN cl_abap_typedescr=&gt;typekind_date.
-          lo_addit = cl_abap_elemdescr=&gt;get_d( ).
-          CREATE DATA lo_value_new TYPE HANDLE lo_addit.
-          ASSIGN lo_value_new-&gt;* TO &lt;fs_date&gt;.
-          IF sy-subrc = 0.
-            &lt;fs_date&gt; = &lt;fs_value&gt;.
-            lv_value = zcl_excel_common=&gt;date_to_excel_string( ip_value = &lt;fs_date&gt; ) .
-          ENDIF.
-* Begin of change issue #152 - don&apos;t touch exisiting style if only value is passed
-* Moved to end of routine - apply date-format even if other styleinformation is passed
-*          IF ip_style IS NOT SUPPLIED. &quot;get default date format in case parameter is initial
-*            lo_style = excel-&gt;add_new_style( ).
-*            lo_style-&gt;number_format-&gt;format_code = get_default_excel_date_format( ).
-*            lv_style_guid = lo_style-&gt;get_guid( ).
-*          ENDIF.
-* End of change issue #152 - don&apos;t touch exisiting style if only value is passed
-
-        WHEN cl_abap_typedescr=&gt;typekind_time.
-          lo_addit = cl_abap_elemdescr=&gt;get_t( ).
-          CREATE DATA lo_value_new TYPE HANDLE lo_addit.
-          ASSIGN lo_value_new-&gt;* TO &lt;fs_time&gt;.
-          IF sy-subrc = 0.
-            &lt;fs_time&gt; = &lt;fs_value&gt;.
-            lv_value = zcl_excel_common=&gt;time_to_excel_string( ip_value = &lt;fs_time&gt; ).
-          ENDIF.
-* Begin of change issue #152 - don&apos;t touch exisiting style if only value is passed
-* Moved to end of routine - apply time-format even if other styleinformation is passed
-*          IF ip_style IS NOT SUPPLIED. &quot;get default time format for user in case parameter is initial
-*            lo_style = excel-&gt;add_new_style( ).
-*            lo_style-&gt;number_format-&gt;format_code = zcl_excel_style_number_format=&gt;c_format_date_time6.
-*            lv_style_guid = lo_style-&gt;get_guid( ).
-*          ENDIF.
-* End of change issue #152 - don&apos;t touch exisiting style if only value is passed
-
-        WHEN OTHERS.
-          RAISE EXCEPTION TYPE zcx_excel
-            EXPORTING
-              error = &apos;Invalid data type of input value&apos;.
-      ENDCASE.
-    ENDIF.
-
-  ENDIF.
-
-  IF ip_hyperlink IS BOUND.
-    ip_hyperlink-&gt;set_cell_reference( ip_column = ip_column
-                                      ip_row = ip_row ).
-    me-&gt;hyperlinks-&gt;add( ip_hyperlink ).
-  ENDIF.
-
-* Begin of change issue #152 - don&apos;t touch exisiting style if only value is passed
-* Read table moved up, so that current style may be evaluated
-*  lv_column = zcl_excel_common=&gt;convert_column2int( ip_column ).
-
-*  READ TABLE sheet_content ASSIGNING &lt;fs_sheet_content&gt; WITH KEY cell_row    = ip_row
-*                                                                 cell_column = lv_column.
-*
-*  IF sy-subrc EQ 0.
-  IF &lt;fs_sheet_content&gt; IS ASSIGNED.
-* End of change issue #152 - don&apos;t touch exisiting style if only value is passed
-    &lt;fs_sheet_content&gt;-cell_value   = lv_value.
-    &lt;fs_sheet_content&gt;-cell_formula = ip_formula.
-    &lt;fs_sheet_content&gt;-cell_style   = lv_style_guid.
-    &lt;fs_sheet_content&gt;-data_type    = lv_data_type.
-  ELSE.
-    ls_sheet_content-cell_row     = ip_row.
-    ls_sheet_content-cell_column  = lv_column.
-    ls_sheet_content-cell_value   = lv_value.
-    ls_sheet_content-cell_formula = ip_formula.
-    ls_sheet_content-cell_style   = lv_style_guid.
-    ls_sheet_content-data_type    = lv_data_type.
-    lv_row_alpha = ip_row.
-*    SHIFT lv_row_alpha RIGHT DELETING TRAILING space.&quot;del #152 - replaced with condense - should be faster
-*    SHIFT lv_row_alpha LEFT DELETING LEADING space.  &quot;del #152 - replaced with condense - should be faster
-    CONDENSE lv_row_alpha NO-GAPS.                    &quot;ins #152 - replaced 2 shifts      - should be faster
-    lv_col_alpha = zcl_excel_common=&gt;CONVERT_COLUMN2ALPHA( ip_column ).       &quot; issue #155 - less restrictive typing for ip_column
-    CONCATENATE lv_col_alpha lv_row_alpha INTO ls_sheet_content-cell_coords.  &quot; issue #155 - less restrictive typing for ip_column
-    INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING &lt;fs_sheet_content&gt;. &quot;ins #152 - Now &lt;fs_sheet_content&gt; always holds the data
-*    APPEND ls_sheet_content TO sheet_content.
-*    SORT sheet_content BY cell_row cell_column.
-    &quot; me-&gt;update_dimension_range( ).
-
-  ENDIF.
-
-* Begin of change issue #152 - don&apos;t touch exisiting style if only value is passed
-* For Date- or Timefields change the formatcode if nothing is set yet
-* Enhancement option:  Check if existing formatcode is a date/ or timeformat
-*                      If not, use default
-  DATA: lo_format_code_datetime TYPE zexcel_number_format.
-  DATA: stylemapping    TYPE zexcel_s_stylemapping.
-  CASE lv_value_type.
-    WHEN cl_abap_typedescr=&gt;typekind_date.
-      TRY.
-          stylemapping = me-&gt;excel-&gt;get_style_to_guid( &lt;fs_sheet_content&gt;-cell_style ).
-        CATCH zcx_excel .
-      ENDTRY.
-      IF stylemapping-complete_stylex-number_format-format_code IS INITIAL OR
-         stylemapping-complete_style-number_format-format_code IS INITIAL.
-        lo_format_code_datetime = zcl_excel_style_number_format=&gt;c_format_date_std.
-      ELSE.
-        lo_format_code_datetime = stylemapping-complete_style-number_format-format_code.
-      ENDIF.
-      me-&gt;change_cell_style( ip_column                      = ip_column
-                             ip_row                         = ip_row
-                             ip_number_format_format_code   = lo_format_code_datetime ).
-
-    WHEN cl_abap_typedescr=&gt;typekind_time.
-      TRY.
-          stylemapping = me-&gt;excel-&gt;get_style_to_guid( &lt;fs_sheet_content&gt;-cell_style ).
-        CATCH zcx_excel .
-      ENDTRY.
-      IF stylemapping-complete_stylex-number_format-format_code IS INITIAL OR
-         stylemapping-complete_style-number_format-format_code IS INITIAL.
-        lo_format_code_datetime = zcl_excel_style_number_format=&gt;c_format_date_time6.
-      ELSE.
-        lo_format_code_datetime = stylemapping-complete_style-number_format-format_code.
-      ENDIF.
-      me-&gt;change_cell_style( ip_column                      = ip_column
-                             ip_row                         = ip_row
-                             ip_number_format_format_code   = lo_format_code_datetime ).
-
-  ENDCASE.
-* End of change issue #152 - don&apos;t touch exisiting style if only value is passed
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL_STYLE" VERSION="1" LANGU="E" DESCRIPT="Set cell style" EXPOSURE="2" STATE="1" EDITORDER="45 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL_STYLE" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL_STYLE" SCONAME="IP_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL_STYLE" SCONAME="IP_STYLE" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL_STYLE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method SET_CELL_STYLE.
-
-  DATA: lv_column                 TYPE zexcel_cell_column,
-        ls_sheet_content          TYPE zexcel_s_cell_data,
-        lv_row_alpha              TYPE string,
-        lo_style                  TYPE REF TO zcl_excel_style,
-        lv_style_guid             TYPE zexcel_cell_style.
-
-  FIELD-SYMBOLS: &lt;fs_sheet_content&gt; TYPE zexcel_s_cell_data.
-
-  lv_style_guid = ip_style.
-
-  lv_column = zcl_excel_common=&gt;convert_column2int( ip_column ).
-
-  READ TABLE sheet_content ASSIGNING &lt;fs_sheet_content&gt; WITH KEY cell_row    = ip_row
-                                                                 cell_column = lv_column.
-
-  IF sy-subrc EQ 0.
-    &lt;fs_sheet_content&gt;-cell_style   = lv_style_guid.
-  ELSE.
-    set_cell( ip_column = ip_column ip_row = ip_row ip_value = &apos;&apos; ip_style = ip_style ).
-  ENDIF.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_COLUMN_WIDTH" VERSION="1" LANGU="E" DESCRIPT="Set column width" EXPOSURE="2" STATE="1" EDITORDER="46 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_COLUMN_WIDTH" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_COLUMN_WIDTH" SCONAME="IP_WIDTH_FIX" VERSION="1" LANGU="E" DESCRIPT="A positive value will set column width" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE" PARVALUE="0"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_COLUMN_WIDTH" SCONAME="IP_WIDTH_AUTOSIZE" VERSION="1" LANGU="E" DESCRIPT="Autosize column" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PARVALUE="&apos;X&apos;"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_COLUMN_WIDTH" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method SET_COLUMN_WIDTH.
-  DATA: column_dimension  TYPE REF TO zcl_excel_worksheet_columndime.
-  DATA: width             TYPE float.
-
-  column_dimension = me-&gt;get_column_dimension( ip_column ).
-
-* if a fix size is supplied use this
-  IF ip_width_fix IS SUPPLIED.
-    TRY.
-        width = ip_width_fix.
-        IF width &lt;= 0.
-          RAISE EXCEPTION TYPE zcx_excel
-            EXPORTING
-              error = &apos;Please supply a positive number as column-width&apos;.
-        ENDIF.
-        column_dimension-&gt;set_width( width ).
-        EXIT.
-      CATCH cx_sy_conversion_no_number.
-* Strange stuff passed --&gt; raise error
-        RAISE EXCEPTION TYPE zcx_excel
-          EXPORTING
-            error = &apos;Unable to interpret supplied input as number&apos;.
-    ENDTRY.
-  ENDIF.
-
-* If we get down to here, we have to use whatever is found in autosize.
-  column_dimension-&gt;set_auto_size( ip_width_autosize ).
-
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_DEFAULT_EXCEL_DATE_FORMAT" VERSION="1" LANGU="E" DESCRIPT="Sets default date format" EXPOSURE="2" STATE="1" EDITORDER="47 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_DEFAULT_EXCEL_DATE_FORMAT" SCONAME="IP_DEFAULT_EXCEL_DATE_FORMAT" VERSION="1" LANGU="E" DESCRIPT="Default date format" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_NUMBER_FORMAT"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_DEFAULT_EXCEL_DATE_FORMAT" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method SET_DEFAULT_EXCEL_DATE_FORMAT.
-
-  IF ip_default_excel_date_format IS INITIAL.
-    RAISE EXCEPTION TYPE zcx_excel
-      EXPORTING
-        error = &apos;Default date format cannot be blank&apos;.
-  ENDIF.
-
-  default_excel_date_format = ip_default_excel_date_format.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_MERGE" VERSION="1" LANGU="E" DESCRIPT="Set the merge range" EXPOSURE="2" STATE="1" EDITORDER="48 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_MERGE" SCONAME="IP_COLUMN_START" VERSION="1" LANGU="E" DESCRIPT="Cell Column Start" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_MERGE" SCONAME="IP_COLUMN_END" VERSION="1" LANGU="E" DESCRIPT="Cell Column End" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_MERGE" SCONAME="IP_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_MERGE" SCONAME="IP_ROW_TO" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW" PAROPTIONL="X"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_MERGE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method SET_MERGE.
-
-  DATA: lv_column_start           TYPE zexcel_cell_column,
-        lv_column_end             TYPE zexcel_cell_column,
-        ls_sheet_content          TYPE zexcel_s_cell_data,
-        lv_row_alpha              TYPE string.
-
-  FIELD-SYMBOLS: &lt;fs_sheet_content&gt; TYPE zexcel_s_cell_data.
-
-  lv_column_start = zcl_excel_common=&gt;convert_column2int( ip_column_start ).
-  lv_column_end   = zcl_excel_common=&gt;convert_column2int( ip_column_end ).
-
-  ls_sheet_content-cell_row     = ip_row.
-  ls_sheet_content-cell_column  = lv_column_start.
-  lv_row_alpha = ip_row.
-  SHIFT lv_row_alpha RIGHT DELETING TRAILING space.
-  SHIFT lv_row_alpha LEFT DELETING LEADING space.
-  CONCATENATE ip_column_start lv_row_alpha INTO ls_sheet_content-cell_coords.
-  INSERT ls_sheet_content INTO TABLE sheet_content_merge.
-
-  ls_sheet_content-cell_column  = lv_column_end.
-  IF ip_row_to IS SUPPLIED.
-    ls_sheet_content-cell_row = ip_row_to.
-    lv_row_alpha = ip_row_to.
-  ELSE.
-    lv_row_alpha = ip_row.
-    ls_sheet_content-cell_row = ip_row.
-  ENDIF.
-
-  SHIFT lv_row_alpha RIGHT DELETING TRAILING space.
-  SHIFT lv_row_alpha LEFT DELETING LEADING space.
-  CONCATENATE ip_column_end lv_row_alpha INTO ls_sheet_content-cell_coords.
-  INSERT ls_sheet_content INTO TABLE sheet_content_merge.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_PRINT_GRIDLINES" VERSION="1" LANGU="E" DESCRIPT="Set print gridlines" EXPOSURE="2" STATE="1" EDITORDER="49 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_PRINT_GRIDLINES" SCONAME="I_PRINT_GRIDLINES" VERSION="1" LANGU="E" DESCRIPT="Print Gridlines" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_PRINT_GRIDLINES"/>
-  <source>method SET_PRINT_GRIDLINES.
-  me-&gt;print_gridlines = i_print_gridlines.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_PRINT_REPEAT_COLUMNS" VERSION="1" LANGU="E" ALIAS="X" EXPOSURE="2" STATE="1" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" REFCLSNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS" REFCMPNAME="SET_PRINT_REPEAT_COLUMNS" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter VERSION="0" CMPTYPE="0" MTDTYPE="0" EDITORDER="0 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
-  <parameter VERSION="0" CMPTYPE="0" MTDTYPE="0" EDITORDER="0 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_PRINT_REPEAT_ROWS" VERSION="1" LANGU="E" ALIAS="X" EXPOSURE="2" STATE="1" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" REFCLSNAME="ZIF_EXCEL_SHEET_PRINTSETTINGS" REFCMPNAME="SET_PRINT_REPEAT_ROWS" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter VERSION="0" CMPTYPE="0" MTDTYPE="0" EDITORDER="0 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
-  <parameter VERSION="0" CMPTYPE="0" MTDTYPE="0" EDITORDER="0 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_ROW_HEIGHT" VERSION="1" LANGU="E" DESCRIPT="Set row height" EXPOSURE="2" STATE="1" EDITORDER="50 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_ROW_HEIGHT" SCONAME="IP_ROW" VERSION="1" LANGU="E" DESCRIPT="Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_ROW_HEIGHT" SCONAME="IP_HEIGHT_FIX" VERSION="1" LANGU="E" DESCRIPT="A positive value will set row height" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_ROW_HEIGHT" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method SET_ROW_HEIGHT.
-  DATA: row_dimension     TYPE REF TO zcl_excel_worksheet_rowdimensi.
-  DATA: height            TYPE float.
-
-  row_dimension = me-&gt;get_row_dimension( ip_row ).
-
-* if a fix size is supplied use this
-  TRY.
-      height = ip_height_fix.
-      IF height &lt;= 0.
-        RAISE EXCEPTION TYPE zcx_excel
-          EXPORTING
-            error = &apos;Please supply a positive number as row-height&apos;.
-      ENDIF.
-      row_dimension-&gt;set_row_height( height ).
-      EXIT.
-    CATCH cx_sy_conversion_no_number.
-* Strange stuff passed --&gt; raise error
-      RAISE EXCEPTION TYPE zcx_excel
-        EXPORTING
-          error = &apos;Unable to interpret supplied input as number&apos;.
-  ENDTRY.
-
-
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_SHOW_GRIDLINES" VERSION="1" LANGU="E" DESCRIPT="Set show gridlines" EXPOSURE="2" STATE="1" EDITORDER="51 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_SHOW_GRIDLINES" SCONAME="I_SHOW_GRIDLINES" VERSION="1" LANGU="E" DESCRIPT="Show Gridlines" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_SHOW_GRIDLINES"/>
-  <source>method SET_SHOW_GRIDLINES.
-  me-&gt;show_gridlines = i_show_gridlines.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_SHOW_ROWCOLHEADERS" VERSION="1" LANGU="E" DESCRIPT="Set show colum row headers" EXPOSURE="2" STATE="1" EDITORDER="52 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_SHOW_ROWCOLHEADERS" SCONAME="I_SHOW_ROWCOLHEADERS" VERSION="1" LANGU="E" DESCRIPT="Show Gridlines" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_SHOW_ROWCOLHEADER"/>
-  <source>method SET_SHOW_ROWCOLHEADERS.
-  me-&gt;show_rowcolheaders = i_show_rowcolheaders.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABCOLOR" VERSION="1" LANGU="E" DESCRIPT="Set tabcolor" EXPOSURE="2" STATE="1" EDITORDER="53 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABCOLOR" SCONAME="IV_TABCOLOR" VERSION="1" LANGU="E" DESCRIPT="Tabcolor" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_TABCOLOR"/>
-  <source>method SET_TABCOLOR.
-  me-&gt;tabcolor = iv_tabcolor.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" VERSION="1" LANGU="E" DESCRIPT="Set cell value from a table" EXPOSURE="2" STATE="1" EDITORDER="54 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" SCONAME="IP_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" SCONAME="IP_HDR_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" SCONAME="IP_BODY_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" SCONAME="IP_TABLE_TITLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" SCONAME="IP_TOP_LEFT_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA" PARVALUE="&apos;B&apos;" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" SCONAME="IP_TOP_LEFT_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="6 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW" PARVALUE="3" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" SCONAME="IP_TRANSPOSE" VERSION="1" LANGU="E" DESCRIPT="Transpose table" CMPTYPE="1" MTDTYPE="0" EDITORDER="7 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="XFELD" PAROPTIONL="X"/>
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" SCONAME="IP_NO_HEADER" VERSION="1" LANGU="E" DESCRIPT="Do not write header" CMPTYPE="1" MTDTYPE="0" EDITORDER="8 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="XFELD" PAROPTIONL="X"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TABLE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method SET_TABLE.
-
-  DATA: lo_tabdescr     TYPE REF TO cl_abap_structdescr,
-        lr_data         TYPE REF TO data,
-        ls_newline      TYPE REF TO data,
-        ls_header       TYPE x030l,
-        lt_dfies        TYPE ddfields,
-        lv_row_header   TYPE zexcel_cell_row VALUE &apos;2&apos;,
-        lv_col_header   TYPE zexcel_cell_column_alpha VALUE &apos;B&apos;,
-        lv_row_int      TYPE zexcel_cell_row,
-        lv_column_int   TYPE zexcel_cell_column,
-        lv_column_alpha TYPE zexcel_cell_column_alpha,
-        lv_cell_value   TYPE zexcel_cell_value.
-
-
-  FIELD-SYMBOLS: &lt;fs_table_line&gt;  TYPE ANY,
-                 &lt;fs_fldval&gt;      TYPE ANY,
-                 &lt;fs_dfies&gt;       TYPE dfies,
-                 &lt;fs_cell_value&gt;  TYPE zexcel_cell_value.
-
-  lv_column_int = zcl_excel_common=&gt;convert_column2int( ip_top_left_column ).
-  lv_row_int    = ip_top_left_row.
-
-  CREATE DATA lr_data LIKE LINE OF ip_table.
-
-  lo_tabdescr ?= cl_abap_structdescr=&gt;describe_by_data_ref( lr_data ).
-
-  ls_header = lo_tabdescr-&gt;get_ddic_header( ).
-
-  lt_dfies = lo_tabdescr-&gt;get_ddic_field_list( ).
-
-* It is better to loop column by column
-  LOOP AT lt_dfies ASSIGNING &lt;fs_dfies&gt;.
-    lv_column_alpha = zcl_excel_common=&gt;convert_column2alpha( lv_column_int ).
-
-    IF ip_no_header = abap_false.
-      &quot; First of all write column header
-      lv_cell_value = &lt;fs_dfies&gt;-scrtext_m.
-      me-&gt;set_cell( ip_column = lv_column_alpha
-                    ip_row    = lv_row_int
-                    ip_value  = lv_cell_value
-                    ip_style  = ip_hdr_style ).
-      IF ip_transpose = abap_true.
-        ADD 1 TO lv_column_int.
-      ELSE.
-        ADD 1 TO lv_row_int.
-      ENDIF.
-    ENDIF.
-
-    LOOP AT ip_table ASSIGNING &lt;fs_table_line&gt;.
-      lv_column_alpha = zcl_excel_common=&gt;convert_column2alpha( lv_column_int ).
-      ASSIGN COMPONENT &lt;fs_dfies&gt;-fieldname OF STRUCTURE &lt;fs_table_line&gt; TO &lt;fs_fldval&gt;.
-      MOVE &lt;fs_fldval&gt; TO lv_cell_value.
-      me-&gt;set_cell( ip_column = lv_column_alpha
-                    ip_row    = lv_row_int
-                    ip_value  = &lt;fs_fldval&gt;   &quot;lv_cell_value
-                    ip_style  = ip_body_style ).
-      IF ip_transpose = abap_true.
-        ADD 1 TO lv_column_int.
-      ELSE.
-        ADD 1 TO lv_row_int.
-      ENDIF.
-    ENDLOOP.
-    IF ip_transpose = abap_true.
-      lv_column_int = zcl_excel_common=&gt;convert_column2int( ip_top_left_column ).
-      ADD 1 TO lv_row_int.
-    ELSE.
-      lv_row_int = ip_top_left_row.
-      ADD 1 TO lv_column_int.
-    ENDIF.
-  ENDLOOP.
-
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TITLE" VERSION="1" LANGU="E" DESCRIPT="Set WorkSheet Title" EXPOSURE="2" STATE="1" EDITORDER="55 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TITLE" SCONAME="IP_TITLE" VERSION="1" LANGU="E" DESCRIPT="Title" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_SHEET_TITLE"/>
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_TITLE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method SET_TITLE.
-  DATA: lo_worksheets_iterator TYPE REF TO cl_object_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_range               TYPE REF TO zcl_excel_range,
-        lv_range_value         TYPE zexcel_range_value.
-
-
-* Check whether title consists only of allowed characters
-* Illegal characters are: /	\	[	]	*	?	:  --&gt; http://msdn.microsoft.com/en-us/library/ff837411.aspx
-  IF ip_title CA &apos;/\[]*?:&apos;.
-    RAISE EXCEPTION TYPE zcx_excel
-      EXPORTING
-        error = &apos;Found illegal character in sheetname. List of forbidden characters: /\[]*?: &apos;.
-  ENDIF.
-
-
-* Check whether title is unique in worksheet
-  lo_worksheets_iterator = me-&gt;excel-&gt;get_worksheets_iterator( ).
-  WHILE lo_worksheets_iterator-&gt;has_next( ) = &apos;X&apos;.
-    lo_worksheet ?= lo_worksheets_iterator-&gt;get_next( ).
-    CHECK me-&gt;guid &lt;&gt; lo_worksheet-&gt;get_guid( ).  &quot; Don&apos;t check against itself
-    IF ip_title = lo_worksheet-&gt;get_title( ).  &quot; Not unique --&gt; raise exception
-      errormessage = &apos;Duplicate sheetname &amp;&apos;.
-      REPLACE &apos;&amp;&apos; IN errormessage WITH ip_title.
-      RAISE EXCEPTION TYPE zcx_excel
-        EXPORTING
-          error = errormessage.
-    ENDIF.
-  ENDWHILE.
-
-  CONCATENATE me-&gt;title &apos;!&apos; INTO lv_rangesheetname_old.
-
-  me-&gt;title = ip_title.
-* After changing this worksheets title we have to adjust
-* all ranges that are referring to this worksheet.
-
-  CONCATENATE me-&gt;title &apos;!&apos; INTO lv_rangesheetname_new.
-
-  lo_ranges_iterator = me-&gt;excel-&gt;get_ranges_iterator( ).
-  WHILE lo_ranges_iterator-&gt;has_next( ) = &apos;X&apos;.
-    lo_range ?= lo_ranges_iterator-&gt;get_next( ).
-    lv_range_value = lo_range-&gt;get_value( ).
-    REPLACE ALL OCCURRENCES OF lv_rangesheetname_old IN lv_range_value WITH lv_rangesheetname_new.
-    IF sy-subrc = 0.
-      lo_range-&gt;set_range_value( lv_range_value ).
-    ENDIF.
-
-  ENDWHILE.
-endmethod.</source>
- </method>
- <method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="UPDATE_DIMENSION_RANGE" VERSION="1" LANGU="E" DESCRIPT="Update dimension range" EXPOSURE="0" STATE="1" EDITORDER="56 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
-  <exception CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="UPDATE_DIMENSION_RANGE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
-  <source>method UPDATE_DIMENSION_RANGE.
-
-  DATA: ls_sheet_content TYPE zexcel_s_cell_data,
-        lt_sheet_content TYPE zexcel_t_cell_data_unsorted,
-        lv_row_alpha     TYPE string,
-        lv_column_alpha  TYPE zexcel_cell_column_alpha.
-
-  CHECK sheet_content IS NOT INITIAL.
-
-* update dimension range
-  lt_sheet_content = sheet_content.
-  &quot;upper left corner
-  SORT lt_sheet_content BY cell_row.
-  READ TABLE lt_sheet_content INDEX 1 INTO ls_sheet_content.
-  upper_cell-cell_row = ls_sheet_content-cell_row.
-  SORT lt_sheet_content BY cell_column.
-  READ TABLE lt_sheet_content INDEX 1 INTO ls_sheet_content.
-  upper_cell-cell_column = ls_sheet_content-cell_column.
-
-  lv_row_alpha = upper_cell-cell_row.
-  lv_column_alpha = zcl_excel_common=&gt;convert_column2alpha( upper_cell-cell_column ).
-  SHIFT lv_row_alpha RIGHT DELETING TRAILING space.
-  SHIFT lv_row_alpha LEFT DELETING LEADING space.
-  CONCATENATE lv_column_alpha lv_row_alpha INTO upper_cell-cell_coords.
-
-  &quot;bottom right corner
-  SORT lt_sheet_content BY cell_row DESCENDING.
-  READ TABLE lt_sheet_content INDEX 1 INTO ls_sheet_content.
-  lower_cell-cell_row = ls_sheet_content-cell_row.
-  SORT lt_sheet_content BY cell_column DESCENDING.
-  READ TABLE lt_sheet_content INDEX 1 INTO ls_sheet_content.
-  lower_cell-cell_column = ls_sheet_content-cell_column.
-
-  lv_row_alpha = lower_cell-cell_row.
-  lv_column_alpha = zcl_excel_common=&gt;convert_column2alpha( lower_cell-cell_column ).
-  SHIFT lv_row_alpha RIGHT DELETING TRAILING space.
-  SHIFT lv_row_alpha LEFT DELETING LEADING space.
-  CONCATENATE lv_column_alpha lv_row_alpha INTO lower_cell-cell_coords.
-
-endmethod.</source>
- </method>
-</CLAS>
- -
- - - - - - - - -
- - - - - -
-
-
- -
- - - - - - - - - - - - - - - - -